<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Doxygen: pcl::JointIterativeClosestPoint&lt; PointSource, PointTarget, Scalar &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Doxygen
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'搜索','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','搜索');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classpcl_1_1_joint_iterative_closest_point.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-types">Public 类型</a> &#124;
<a href="#pub-methods">Public 成员函数</a> &#124;
<a href="#pro-methods">Protected 成员函数</a> &#124;
<a href="#pro-attribs">Protected 属性</a> &#124;
<a href="classpcl_1_1_joint_iterative_closest_point-members.html">所有成员列表</a>  </div>
  <div class="headertitle">
<div class="title">pcl::JointIterativeClosestPoint&lt; PointSource, PointTarget, Scalar &gt; 模板类 参考</div>  </div>
</div><!--header-->
<div class="contents">

<p><b><a class="el" href="classpcl_1_1_joint_iterative_closest_point.html" title="JointIterativeClosestPoint extends ICP to multiple frames which share the same transform....">JointIterativeClosestPoint</a></b> extends ICP to multiple frames which share the same transform. This is particularly useful when solving for camera extrinsics using multiple observations. When given a single pair of clouds, this reduces to vanilla ICP.  
 <a href="classpcl_1_1_joint_iterative_closest_point.html#details">更多...</a></p>

<p><code>#include &lt;<a class="el" href="joint__icp_8h_source.html">joint_icp.h</a>&gt;</code></p>
<div class="dynheader">
类 pcl::JointIterativeClosestPoint&lt; PointSource, PointTarget, Scalar &gt; 继承关系图:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classpcl_1_1_joint_iterative_closest_point.png" usemap="#pcl::JointIterativeClosestPoint_3C_20PointSource_2C_20PointTarget_2C_20Scalar_20_3E_map" alt=""/>
  <map id="pcl::JointIterativeClosestPoint_3C_20PointSource_2C_20PointTarget_2C_20Scalar_20_3E_map" name="pcl::JointIterativeClosestPoint_3C_20PointSource_2C_20PointTarget_2C_20Scalar_20_3E_map">
<area href="classpcl_1_1_iterative_closest_point.html" alt="pcl::IterativeClosestPoint&lt; PointSource, PointTarget, float &gt;" shape="rect" coords="0,112,388,136"/>
<area href="classpcl_1_1_registration.html" alt="pcl::Registration&lt; PointSource, PointTarget, float &gt;" shape="rect" coords="0,56,388,80"/>
<area href="classpcl_1_1_p_c_l_base.html" alt="pcl::PCLBase&lt; PointSource &gt;" shape="rect" coords="0,0,388,24"/>
  </map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
<tr class="memitem:a5dea2a72917de75a00a010e392260506"><td class="memItemLeft" align="right" valign="top"><a id="a5dea2a72917de75a00a010e392260506"></a>
typedef <a class="el" href="classpcl_1_1_iterative_closest_point.html">IterativeClosestPoint</a>&lt; PointSource, PointTarget, Scalar &gt;::<a class="el" href="classpcl_1_1_point_cloud.html">PointCloudSource</a>&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudSource</b></td></tr>
<tr class="separator:a5dea2a72917de75a00a010e392260506"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ad10988523f6d52283c66fac27a7fcc"><td class="memItemLeft" align="right" valign="top"><a id="a4ad10988523f6d52283c66fac27a7fcc"></a>
typedef PointCloudSource::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudSourcePtr</b></td></tr>
<tr class="separator:a4ad10988523f6d52283c66fac27a7fcc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1543bafaf5fc832b5e8e6dfcc65f28ef"><td class="memItemLeft" align="right" valign="top"><a id="a1543bafaf5fc832b5e8e6dfcc65f28ef"></a>
typedef PointCloudSource::ConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudSourceConstPtr</b></td></tr>
<tr class="separator:a1543bafaf5fc832b5e8e6dfcc65f28ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad7327ba5607b56f4b7d3dc3167ab29ed"><td class="memItemLeft" align="right" valign="top"><a id="ad7327ba5607b56f4b7d3dc3167ab29ed"></a>
typedef <a class="el" href="classpcl_1_1_iterative_closest_point.html">IterativeClosestPoint</a>&lt; PointSource, PointTarget, Scalar &gt;::<a class="el" href="classpcl_1_1_point_cloud.html">PointCloudTarget</a>&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudTarget</b></td></tr>
<tr class="separator:ad7327ba5607b56f4b7d3dc3167ab29ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a085e0e8be2e0e10943e86b5a4c005615"><td class="memItemLeft" align="right" valign="top"><a id="a085e0e8be2e0e10943e86b5a4c005615"></a>
typedef PointCloudTarget::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudTargetPtr</b></td></tr>
<tr class="separator:a085e0e8be2e0e10943e86b5a4c005615"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5d5d034cf0847737ceac02309c45a91b"><td class="memItemLeft" align="right" valign="top"><a id="a5d5d034cf0847737ceac02309c45a91b"></a>
typedef PointCloudTarget::ConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudTargetConstPtr</b></td></tr>
<tr class="separator:a5d5d034cf0847737ceac02309c45a91b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a78de6efeab5fafc74dc914e3ffb0d864"><td class="memItemLeft" align="right" valign="top"><a id="a78de6efeab5fafc74dc914e3ffb0d864"></a>
typedef <a class="el" href="classpcl_1_1search_1_1_kd_tree.html">pcl::search::KdTree</a>&lt; PointTarget &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>KdTree</b></td></tr>
<tr class="separator:a78de6efeab5fafc74dc914e3ffb0d864"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1467734def1f818f54b5a6d8561fa05a"><td class="memItemLeft" align="right" valign="top"><a id="a1467734def1f818f54b5a6d8561fa05a"></a>
typedef <a class="el" href="classpcl_1_1search_1_1_kd_tree.html">pcl::search::KdTree</a>&lt; PointTarget &gt;::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>KdTreePtr</b></td></tr>
<tr class="separator:a1467734def1f818f54b5a6d8561fa05a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae130d0374c8324d15026bbdfb7ea1bf"><td class="memItemLeft" align="right" valign="top"><a id="aae130d0374c8324d15026bbdfb7ea1bf"></a>
typedef <a class="el" href="classpcl_1_1search_1_1_kd_tree.html">pcl::search::KdTree</a>&lt; PointSource &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>KdTreeReciprocal</b></td></tr>
<tr class="separator:aae130d0374c8324d15026bbdfb7ea1bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac7154af6929d3dd87b1ad08f740032a0"><td class="memItemLeft" align="right" valign="top"><a id="ac7154af6929d3dd87b1ad08f740032a0"></a>
typedef KdTree::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>KdTreeReciprocalPtr</b></td></tr>
<tr class="separator:ac7154af6929d3dd87b1ad08f740032a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad952b2dca66a4d253a240691ad36a128"><td class="memItemLeft" align="right" valign="top"><a id="ad952b2dca66a4d253a240691ad36a128"></a>
typedef PointIndices::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>PointIndicesPtr</b></td></tr>
<tr class="separator:ad952b2dca66a4d253a240691ad36a128"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6df63b31098af6ef58642abc91fbc8c8"><td class="memItemLeft" align="right" valign="top"><a id="a6df63b31098af6ef58642abc91fbc8c8"></a>
typedef PointIndices::ConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>PointIndicesConstPtr</b></td></tr>
<tr class="separator:a6df63b31098af6ef58642abc91fbc8c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2f34524df89aae05997348c234ba1286"><td class="memItemLeft" align="right" valign="top"><a id="a2f34524df89aae05997348c234ba1286"></a>
typedef boost::shared_ptr&lt; <a class="el" href="classpcl_1_1_joint_iterative_closest_point.html">JointIterativeClosestPoint</a>&lt; PointSource, PointTarget, Scalar &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Ptr</b></td></tr>
<tr class="separator:a2f34524df89aae05997348c234ba1286"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad82214146615ad6af6b3d3c3971b8996"><td class="memItemLeft" align="right" valign="top"><a id="ad82214146615ad6af6b3d3c3971b8996"></a>
typedef boost::shared_ptr&lt; const <a class="el" href="classpcl_1_1_joint_iterative_closest_point.html">JointIterativeClosestPoint</a>&lt; PointSource, PointTarget, Scalar &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstPtr</b></td></tr>
<tr class="separator:ad82214146615ad6af6b3d3c3971b8996"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2e2386d2e654a6ab5ddbdb85b6ac59bf"><td class="memItemLeft" align="right" valign="top"><a id="a2e2386d2e654a6ab5ddbdb85b6ac59bf"></a>
typedef <a class="el" href="classpcl_1_1registration_1_1_correspondence_estimation_base.html">pcl::registration::CorrespondenceEstimationBase</a>&lt; PointSource, PointTarget, Scalar &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>CorrespondenceEstimation</b></td></tr>
<tr class="separator:a2e2386d2e654a6ab5ddbdb85b6ac59bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af9a0876d928fb89459292ee844eeab13"><td class="memItemLeft" align="right" valign="top"><a id="af9a0876d928fb89459292ee844eeab13"></a>
typedef CorrespondenceEstimation::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>CorrespondenceEstimationPtr</b></td></tr>
<tr class="separator:af9a0876d928fb89459292ee844eeab13"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3961017838809f2043442adf58d11b6f"><td class="memItemLeft" align="right" valign="top"><a id="a3961017838809f2043442adf58d11b6f"></a>
typedef CorrespondenceEstimation::ConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>CorrespondenceEstimationConstPtr</b></td></tr>
<tr class="separator:a3961017838809f2043442adf58d11b6f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5e11f5ad27052d3db9d44eef3b4fec57"><td class="memItemLeft" align="right" valign="top"><a id="a5e11f5ad27052d3db9d44eef3b4fec57"></a>
typedef <a class="el" href="classpcl_1_1_iterative_closest_point.html">IterativeClosestPoint</a>&lt; PointSource, PointTarget, Scalar &gt;::Matrix4&#160;</td><td class="memItemRight" valign="bottom"><b>Matrix4</b></td></tr>
<tr class="separator:a5e11f5ad27052d3db9d44eef3b4fec57"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_types_classpcl_1_1_iterative_closest_point"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classpcl_1_1_iterative_closest_point')"><img src="closed.png" alt="-"/>&#160;Public 类型 继承自 <a class="el" href="classpcl_1_1_iterative_closest_point.html">pcl::IterativeClosestPoint&lt; PointSource, PointTarget, float &gt;</a></td></tr>
<tr class="memitem:a06140c8793ffca57ea520e09cb147a08 inherit pub_types_classpcl_1_1_iterative_closest_point"><td class="memItemLeft" align="right" valign="top"><a id="a06140c8793ffca57ea520e09cb147a08"></a>
typedef <a class="el" href="classpcl_1_1_registration.html">Registration</a>&lt; PointSource, PointTarget, float &gt;::PointCloudSource&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudSource</b></td></tr>
<tr class="separator:a06140c8793ffca57ea520e09cb147a08 inherit pub_types_classpcl_1_1_iterative_closest_point"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7c1041812cb98662e8a76f4d4388d02a inherit pub_types_classpcl_1_1_iterative_closest_point"><td class="memItemLeft" align="right" valign="top"><a id="a7c1041812cb98662e8a76f4d4388d02a"></a>
typedef PointCloudSource::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudSourcePtr</b></td></tr>
<tr class="separator:a7c1041812cb98662e8a76f4d4388d02a inherit pub_types_classpcl_1_1_iterative_closest_point"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9396ea9f5eee1d3b50e4b0aeaac89caf inherit pub_types_classpcl_1_1_iterative_closest_point"><td class="memItemLeft" align="right" valign="top"><a id="a9396ea9f5eee1d3b50e4b0aeaac89caf"></a>
typedef PointCloudSource::ConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudSourceConstPtr</b></td></tr>
<tr class="separator:a9396ea9f5eee1d3b50e4b0aeaac89caf inherit pub_types_classpcl_1_1_iterative_closest_point"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0089c6a0f83e293a03ee2c5520e75305 inherit pub_types_classpcl_1_1_iterative_closest_point"><td class="memItemLeft" align="right" valign="top"><a id="a0089c6a0f83e293a03ee2c5520e75305"></a>
typedef <a class="el" href="classpcl_1_1_registration.html">Registration</a>&lt; PointSource, PointTarget, float &gt;::PointCloudTarget&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudTarget</b></td></tr>
<tr class="separator:a0089c6a0f83e293a03ee2c5520e75305 inherit pub_types_classpcl_1_1_iterative_closest_point"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af370c572014efa0c351c5a464c3fea21 inherit pub_types_classpcl_1_1_iterative_closest_point"><td class="memItemLeft" align="right" valign="top"><a id="af370c572014efa0c351c5a464c3fea21"></a>
typedef PointCloudTarget::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudTargetPtr</b></td></tr>
<tr class="separator:af370c572014efa0c351c5a464c3fea21 inherit pub_types_classpcl_1_1_iterative_closest_point"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7904ad55c770ecd58440b286dce62f76 inherit pub_types_classpcl_1_1_iterative_closest_point"><td class="memItemLeft" align="right" valign="top"><a id="a7904ad55c770ecd58440b286dce62f76"></a>
typedef PointCloudTarget::ConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudTargetConstPtr</b></td></tr>
<tr class="separator:a7904ad55c770ecd58440b286dce62f76 inherit pub_types_classpcl_1_1_iterative_closest_point"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af5b499afcccb6b7379da311117a6dd50 inherit pub_types_classpcl_1_1_iterative_closest_point"><td class="memItemLeft" align="right" valign="top"><a id="af5b499afcccb6b7379da311117a6dd50"></a>
typedef PointIndices::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>PointIndicesPtr</b></td></tr>
<tr class="separator:af5b499afcccb6b7379da311117a6dd50 inherit pub_types_classpcl_1_1_iterative_closest_point"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a121ab97a90799c38e850aafc6d694f24 inherit pub_types_classpcl_1_1_iterative_closest_point"><td class="memItemLeft" align="right" valign="top"><a id="a121ab97a90799c38e850aafc6d694f24"></a>
typedef PointIndices::ConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>PointIndicesConstPtr</b></td></tr>
<tr class="separator:a121ab97a90799c38e850aafc6d694f24 inherit pub_types_classpcl_1_1_iterative_closest_point"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3109df4aa6d8df7ed83a33804872bc9c inherit pub_types_classpcl_1_1_iterative_closest_point"><td class="memItemLeft" align="right" valign="top"><a id="a3109df4aa6d8df7ed83a33804872bc9c"></a>
typedef boost::shared_ptr&lt; <a class="el" href="classpcl_1_1_iterative_closest_point.html">IterativeClosestPoint</a>&lt; PointSource, PointTarget, float &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Ptr</b></td></tr>
<tr class="separator:a3109df4aa6d8df7ed83a33804872bc9c inherit pub_types_classpcl_1_1_iterative_closest_point"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a61102b78ee629424fae2ebceb041846f inherit pub_types_classpcl_1_1_iterative_closest_point"><td class="memItemLeft" align="right" valign="top"><a id="a61102b78ee629424fae2ebceb041846f"></a>
typedef boost::shared_ptr&lt; const <a class="el" href="classpcl_1_1_iterative_closest_point.html">IterativeClosestPoint</a>&lt; PointSource, PointTarget, float &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstPtr</b></td></tr>
<tr class="separator:a61102b78ee629424fae2ebceb041846f inherit pub_types_classpcl_1_1_iterative_closest_point"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a87c59c8a79802eb1fdf4ddeb0fa2017a inherit pub_types_classpcl_1_1_iterative_closest_point"><td class="memItemLeft" align="right" valign="top"><a id="a87c59c8a79802eb1fdf4ddeb0fa2017a"></a>
typedef <a class="el" href="classpcl_1_1_registration.html">Registration</a>&lt; PointSource, PointTarget, float &gt;::Matrix4&#160;</td><td class="memItemRight" valign="bottom"><b>Matrix4</b></td></tr>
<tr class="separator:a87c59c8a79802eb1fdf4ddeb0fa2017a inherit pub_types_classpcl_1_1_iterative_closest_point"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_types_classpcl_1_1_registration"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classpcl_1_1_registration')"><img src="closed.png" alt="-"/>&#160;Public 类型 继承自 <a class="el" href="classpcl_1_1_registration.html">pcl::Registration&lt; PointSource, PointTarget, float &gt;</a></td></tr>
<tr class="memitem:a1917aa6cebe00e615553655522e8f851 inherit pub_types_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a1917aa6cebe00e615553655522e8f851"></a>
typedef Eigen::Matrix&lt; float, 4, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Matrix4</b></td></tr>
<tr class="separator:a1917aa6cebe00e615553655522e8f851 inherit pub_types_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a101ced9777ccf8ca067d2b6bb6d209d6 inherit pub_types_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a101ced9777ccf8ca067d2b6bb6d209d6"></a>
typedef boost::shared_ptr&lt; <a class="el" href="classpcl_1_1_registration.html">Registration</a>&lt; PointSource, PointTarget, float &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Ptr</b></td></tr>
<tr class="separator:a101ced9777ccf8ca067d2b6bb6d209d6 inherit pub_types_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a30862684660b99ba01cdfbec4dfbc7e1 inherit pub_types_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a30862684660b99ba01cdfbec4dfbc7e1"></a>
typedef boost::shared_ptr&lt; const <a class="el" href="classpcl_1_1_registration.html">Registration</a>&lt; PointSource, PointTarget, float &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstPtr</b></td></tr>
<tr class="separator:a30862684660b99ba01cdfbec4dfbc7e1 inherit pub_types_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac1e81ff894bb7e879ca821ade766ec16 inherit pub_types_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="ac1e81ff894bb7e879ca821ade766ec16"></a>
typedef pcl::registration::CorrespondenceRejector::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>CorrespondenceRejectorPtr</b></td></tr>
<tr class="separator:ac1e81ff894bb7e879ca821ade766ec16 inherit pub_types_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae46cd2323712412e133e17f8863a5f03 inherit pub_types_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="ae46cd2323712412e133e17f8863a5f03"></a>
typedef <a class="el" href="classpcl_1_1search_1_1_kd_tree.html">pcl::search::KdTree</a>&lt; PointTarget &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>KdTree</b></td></tr>
<tr class="separator:ae46cd2323712412e133e17f8863a5f03 inherit pub_types_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a06fce1e17a013422e5b04de4c1802562 inherit pub_types_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a06fce1e17a013422e5b04de4c1802562"></a>
typedef <a class="el" href="classpcl_1_1search_1_1_kd_tree.html">pcl::search::KdTree</a>&lt; PointTarget &gt;::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>KdTreePtr</b></td></tr>
<tr class="separator:a06fce1e17a013422e5b04de4c1802562 inherit pub_types_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa19c3b030967b37a754c81e4eee21283 inherit pub_types_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="aa19c3b030967b37a754c81e4eee21283"></a>
typedef <a class="el" href="classpcl_1_1search_1_1_kd_tree.html">pcl::search::KdTree</a>&lt; PointSource &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>KdTreeReciprocal</b></td></tr>
<tr class="separator:aa19c3b030967b37a754c81e4eee21283 inherit pub_types_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8f0f0491e3e0a1fe0afecb34b1751f7c inherit pub_types_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a8f0f0491e3e0a1fe0afecb34b1751f7c"></a>
typedef KdTreeReciprocal::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>KdTreeReciprocalPtr</b></td></tr>
<tr class="separator:a8f0f0491e3e0a1fe0afecb34b1751f7c inherit pub_types_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af0637a59a403120aa012d9fa68c1d492 inherit pub_types_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="af0637a59a403120aa012d9fa68c1d492"></a>
typedef <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; PointSource &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudSource</b></td></tr>
<tr class="separator:af0637a59a403120aa012d9fa68c1d492 inherit pub_types_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a294ef918cbe14cb3024033e8a7cb1f01 inherit pub_types_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a294ef918cbe14cb3024033e8a7cb1f01"></a>
typedef PointCloudSource::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudSourcePtr</b></td></tr>
<tr class="separator:a294ef918cbe14cb3024033e8a7cb1f01 inherit pub_types_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae8517d707e8ef7d97e4a6d815f68796 inherit pub_types_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="aae8517d707e8ef7d97e4a6d815f68796"></a>
typedef PointCloudSource::ConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudSourceConstPtr</b></td></tr>
<tr class="separator:aae8517d707e8ef7d97e4a6d815f68796 inherit pub_types_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a024693ed432e3cd1c8341d8e2f15b094 inherit pub_types_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a024693ed432e3cd1c8341d8e2f15b094"></a>
typedef <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; PointTarget &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudTarget</b></td></tr>
<tr class="separator:a024693ed432e3cd1c8341d8e2f15b094 inherit pub_types_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad4bf5516a047e734bcb227d027871c11 inherit pub_types_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="ad4bf5516a047e734bcb227d027871c11"></a>
typedef PointCloudTarget::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudTargetPtr</b></td></tr>
<tr class="separator:ad4bf5516a047e734bcb227d027871c11 inherit pub_types_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abf1fc7a0490db8d11553874b8d96c6c3 inherit pub_types_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="abf1fc7a0490db8d11553874b8d96c6c3"></a>
typedef PointCloudTarget::ConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudTargetConstPtr</b></td></tr>
<tr class="separator:abf1fc7a0490db8d11553874b8d96c6c3 inherit pub_types_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abffdcb0783ce57c28a906c244f56feb5 inherit pub_types_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="abffdcb0783ce57c28a906c244f56feb5"></a>
typedef KdTree::PointRepresentationConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>PointRepresentationConstPtr</b></td></tr>
<tr class="separator:abffdcb0783ce57c28a906c244f56feb5 inherit pub_types_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a202062f8fbf59254dbbe0d2810bac86b inherit pub_types_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a202062f8fbf59254dbbe0d2810bac86b"></a>
typedef <a class="el" href="classpcl_1_1registration_1_1_transformation_estimation.html">pcl::registration::TransformationEstimation</a>&lt; PointSource, PointTarget, float &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>TransformationEstimation</b></td></tr>
<tr class="separator:a202062f8fbf59254dbbe0d2810bac86b inherit pub_types_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a881e0a331909edae6a755a1595d0a4bf inherit pub_types_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a881e0a331909edae6a755a1595d0a4bf"></a>
typedef TransformationEstimation::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>TransformationEstimationPtr</b></td></tr>
<tr class="separator:a881e0a331909edae6a755a1595d0a4bf inherit pub_types_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a646ad11e179db2fc42cdf30e0cd30bf6 inherit pub_types_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a646ad11e179db2fc42cdf30e0cd30bf6"></a>
typedef TransformationEstimation::ConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>TransformationEstimationConstPtr</b></td></tr>
<tr class="separator:a646ad11e179db2fc42cdf30e0cd30bf6 inherit pub_types_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9ac2cc8f12fb04be29c9697cab749814 inherit pub_types_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a9ac2cc8f12fb04be29c9697cab749814"></a>
typedef <a class="el" href="classpcl_1_1registration_1_1_correspondence_estimation_base.html">pcl::registration::CorrespondenceEstimationBase</a>&lt; PointSource, PointTarget, float &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>CorrespondenceEstimation</b></td></tr>
<tr class="separator:a9ac2cc8f12fb04be29c9697cab749814 inherit pub_types_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1a0b7973990a95858e1640a1729137b9 inherit pub_types_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a1a0b7973990a95858e1640a1729137b9"></a>
typedef CorrespondenceEstimation::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>CorrespondenceEstimationPtr</b></td></tr>
<tr class="separator:a1a0b7973990a95858e1640a1729137b9 inherit pub_types_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab2ffc3aee341010bc07523c5e9dd507b inherit pub_types_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="ab2ffc3aee341010bc07523c5e9dd507b"></a>
typedef CorrespondenceEstimation::ConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>CorrespondenceEstimationConstPtr</b></td></tr>
<tr class="separator:ab2ffc3aee341010bc07523c5e9dd507b inherit pub_types_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_types_classpcl_1_1_p_c_l_base"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classpcl_1_1_p_c_l_base')"><img src="closed.png" alt="-"/>&#160;Public 类型 继承自 <a class="el" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase&lt; PointSource &gt;</a></td></tr>
<tr class="memitem:ae2f6f6863a73337858b7a7a054eaae4f inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ae2f6f6863a73337858b7a7a054eaae4f"></a>
typedef <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; PointSource &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloud</b></td></tr>
<tr class="separator:ae2f6f6863a73337858b7a7a054eaae4f inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab84dd662cda89edb882fe5307b2136ea inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ab84dd662cda89edb882fe5307b2136ea"></a>
typedef PointCloud::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudPtr</b></td></tr>
<tr class="separator:ab84dd662cda89edb882fe5307b2136ea inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8326513fad0680b6993e2f1a79a6af4 inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ac8326513fad0680b6993e2f1a79a6af4"></a>
typedef PointCloud::ConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudConstPtr</b></td></tr>
<tr class="separator:ac8326513fad0680b6993e2f1a79a6af4 inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae51eae0c7b3e0b7178f4894dff90660a inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ae51eae0c7b3e0b7178f4894dff90660a"></a>
typedef boost::shared_ptr&lt; <a class="el" href="structpcl_1_1_point_indices.html">PointIndices</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointIndicesPtr</b></td></tr>
<tr class="separator:ae51eae0c7b3e0b7178f4894dff90660a inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a51771056fb4ab8c448a11157acbe2ee0 inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a51771056fb4ab8c448a11157acbe2ee0"></a>
typedef boost::shared_ptr&lt; <a class="el" href="structpcl_1_1_point_indices.html">PointIndices</a> const &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointIndicesConstPtr</b></td></tr>
<tr class="separator:a51771056fb4ab8c448a11157acbe2ee0 inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
<tr class="memitem:aab2c1114b8a3243a21cd56906662cb60"><td class="memItemLeft" align="right" valign="top"><a id="aab2c1114b8a3243a21cd56906662cb60"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_joint_iterative_closest_point.html#aab2c1114b8a3243a21cd56906662cb60">JointIterativeClosestPoint</a> ()</td></tr>
<tr class="memdesc:aab2c1114b8a3243a21cd56906662cb60"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty constructor. <br /></td></tr>
<tr class="separator:aab2c1114b8a3243a21cd56906662cb60"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae566e5542c36b88d8f78032d4030ce4d"><td class="memItemLeft" align="right" valign="top"><a id="ae566e5542c36b88d8f78032d4030ce4d"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_joint_iterative_closest_point.html#ae566e5542c36b88d8f78032d4030ce4d">~JointIterativeClosestPoint</a> ()</td></tr>
<tr class="memdesc:ae566e5542c36b88d8f78032d4030ce4d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty destructor <br /></td></tr>
<tr class="separator:ae566e5542c36b88d8f78032d4030ce4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa85301e9c6b5f2fb5811b9ed23572e62"><td class="memItemLeft" align="right" valign="top"><a id="aa85301e9c6b5f2fb5811b9ed23572e62"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_joint_iterative_closest_point.html#aa85301e9c6b5f2fb5811b9ed23572e62">setInputSource</a> (const PointCloudSourceConstPtr &amp;)</td></tr>
<tr class="memdesc:aa85301e9c6b5f2fb5811b9ed23572e62"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the input source (e.g., the point cloud that we want to align to the target) <br /></td></tr>
<tr class="separator:aa85301e9c6b5f2fb5811b9ed23572e62"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3bc7b3d35642538cfb3221356fa3e6e0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_joint_iterative_closest_point.html#a3bc7b3d35642538cfb3221356fa3e6e0">addInputSource</a> (const PointCloudSourceConstPtr &amp;cloud)</td></tr>
<tr class="memdesc:a3bc7b3d35642538cfb3221356fa3e6e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a source cloud to the joint solver  <a href="classpcl_1_1_joint_iterative_closest_point.html#a3bc7b3d35642538cfb3221356fa3e6e0">更多...</a><br /></td></tr>
<tr class="separator:a3bc7b3d35642538cfb3221356fa3e6e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad6a9f69d503110161c920e3c0185530c"><td class="memItemLeft" align="right" valign="top"><a id="ad6a9f69d503110161c920e3c0185530c"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_joint_iterative_closest_point.html#ad6a9f69d503110161c920e3c0185530c">setInputTarget</a> (const PointCloudTargetConstPtr &amp;)</td></tr>
<tr class="memdesc:ad6a9f69d503110161c920e3c0185530c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the input target (e.g., the point cloud that we want to align to the target) <br /></td></tr>
<tr class="separator:ad6a9f69d503110161c920e3c0185530c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afaf2657a7501d3a83130b2fd79876705"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_joint_iterative_closest_point.html#afaf2657a7501d3a83130b2fd79876705">addInputTarget</a> (const PointCloudTargetConstPtr &amp;cloud)</td></tr>
<tr class="memdesc:afaf2657a7501d3a83130b2fd79876705"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a target cloud to the joint solver  <a href="classpcl_1_1_joint_iterative_closest_point.html#afaf2657a7501d3a83130b2fd79876705">更多...</a><br /></td></tr>
<tr class="separator:afaf2657a7501d3a83130b2fd79876705"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a91792123c6770794d22b73cc5bd1c540"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_joint_iterative_closest_point.html#a91792123c6770794d22b73cc5bd1c540">addCorrespondenceEstimation</a> (CorrespondenceEstimationPtr ce)</td></tr>
<tr class="memdesc:a91792123c6770794d22b73cc5bd1c540"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a manual correspondence estimator If you choose to do this, you must add one for each input source / target pair. They do not need to have trees or input clouds set ahead of time.  <a href="classpcl_1_1_joint_iterative_closest_point.html#a91792123c6770794d22b73cc5bd1c540">更多...</a><br /></td></tr>
<tr class="separator:a91792123c6770794d22b73cc5bd1c540"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a69f7e30e383d0943aa383e933cf84932"><td class="memItemLeft" align="right" valign="top"><a id="a69f7e30e383d0943aa383e933cf84932"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_joint_iterative_closest_point.html#a69f7e30e383d0943aa383e933cf84932">clearInputSources</a> ()</td></tr>
<tr class="memdesc:a69f7e30e383d0943aa383e933cf84932"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reset my list of input sources <br /></td></tr>
<tr class="separator:a69f7e30e383d0943aa383e933cf84932"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af498fe8ed571ec7563a61eca96497046"><td class="memItemLeft" align="right" valign="top"><a id="af498fe8ed571ec7563a61eca96497046"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_joint_iterative_closest_point.html#af498fe8ed571ec7563a61eca96497046">clearInputTargets</a> ()</td></tr>
<tr class="memdesc:af498fe8ed571ec7563a61eca96497046"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reset my list of input targets <br /></td></tr>
<tr class="separator:af498fe8ed571ec7563a61eca96497046"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0cc90714da0ff7b2b303649928677803"><td class="memItemLeft" align="right" valign="top"><a id="a0cc90714da0ff7b2b303649928677803"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_joint_iterative_closest_point.html#a0cc90714da0ff7b2b303649928677803">clearCorrespondenceEstimations</a> ()</td></tr>
<tr class="memdesc:a0cc90714da0ff7b2b303649928677803"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reset my list of correspondence estimation methods. <br /></td></tr>
<tr class="separator:a0cc90714da0ff7b2b303649928677803"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classpcl_1_1_iterative_closest_point"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classpcl_1_1_iterative_closest_point')"><img src="closed.png" alt="-"/>&#160;Public 成员函数 继承自 <a class="el" href="classpcl_1_1_iterative_closest_point.html">pcl::IterativeClosestPoint&lt; PointSource, PointTarget, float &gt;</a></td></tr>
<tr class="memitem:a8a45affbd2ef281d58e0741adc9d07ae inherit pub_methods_classpcl_1_1_iterative_closest_point"><td class="memItemLeft" align="right" valign="top"><a id="a8a45affbd2ef281d58e0741adc9d07ae"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_iterative_closest_point.html#a8a45affbd2ef281d58e0741adc9d07ae">IterativeClosestPoint</a> ()</td></tr>
<tr class="memdesc:a8a45affbd2ef281d58e0741adc9d07ae inherit pub_methods_classpcl_1_1_iterative_closest_point"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty constructor. <br /></td></tr>
<tr class="separator:a8a45affbd2ef281d58e0741adc9d07ae inherit pub_methods_classpcl_1_1_iterative_closest_point"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a205be1f82ff55fcb88b8787a06cf5bdb inherit pub_methods_classpcl_1_1_iterative_closest_point"><td class="memItemLeft" align="right" valign="top"><a id="a205be1f82ff55fcb88b8787a06cf5bdb"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_iterative_closest_point.html#a205be1f82ff55fcb88b8787a06cf5bdb">~IterativeClosestPoint</a> ()</td></tr>
<tr class="memdesc:a205be1f82ff55fcb88b8787a06cf5bdb inherit pub_methods_classpcl_1_1_iterative_closest_point"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty destructor <br /></td></tr>
<tr class="separator:a205be1f82ff55fcb88b8787a06cf5bdb inherit pub_methods_classpcl_1_1_iterative_closest_point"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac78bef717f7a6270194511c66fe16b36 inherit pub_methods_classpcl_1_1_iterative_closest_point"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classpcl_1_1registration_1_1_default_convergence_criteria.html">pcl::registration::DefaultConvergenceCriteria</a>&lt; float &gt;::Ptr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_iterative_closest_point.html#ac78bef717f7a6270194511c66fe16b36">getConvergeCriteria</a> ()</td></tr>
<tr class="memdesc:ac78bef717f7a6270194511c66fe16b36 inherit pub_methods_classpcl_1_1_iterative_closest_point"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a pointer to the DefaultConvergenceCriteria used by the IterativeClosestPoint class. This allows to check the convergence state after the <a class="el" href="classpcl_1_1_registration.html#a96212303ca16b6d60020824086887c4f" title="Call the registration algorithm which estimates the transformation and returns the transformed source...">align()</a> method as well as to configure DefaultConvergenceCriteria's parameters not available through the ICP API before the <a class="el" href="classpcl_1_1_registration.html#a96212303ca16b6d60020824086887c4f" title="Call the registration algorithm which estimates the transformation and returns the transformed source...">align()</a> method is called. Please note that the align method sets max_iterations_, euclidean_fitness_epsilon_ and transformation_epsilon_ and therefore overrides the default / set values of the DefaultConvergenceCriteria instance.  <a href="classpcl_1_1_iterative_closest_point.html#ac78bef717f7a6270194511c66fe16b36">更多...</a><br /></td></tr>
<tr class="separator:ac78bef717f7a6270194511c66fe16b36 inherit pub_methods_classpcl_1_1_iterative_closest_point"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad5215429e057c8760ac48e9bdb09b12c inherit pub_methods_classpcl_1_1_iterative_closest_point"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_iterative_closest_point.html#ad5215429e057c8760ac48e9bdb09b12c">setInputSource</a> (const PointCloudSourceConstPtr &amp;cloud)</td></tr>
<tr class="memdesc:ad5215429e057c8760ac48e9bdb09b12c inherit pub_methods_classpcl_1_1_iterative_closest_point"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the input source (e.g., the point cloud that we want to align to the target)  <a href="classpcl_1_1_iterative_closest_point.html#ad5215429e057c8760ac48e9bdb09b12c">更多...</a><br /></td></tr>
<tr class="separator:ad5215429e057c8760ac48e9bdb09b12c inherit pub_methods_classpcl_1_1_iterative_closest_point"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8876f743cc31471a975e950e66c179d4 inherit pub_methods_classpcl_1_1_iterative_closest_point"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_iterative_closest_point.html#a8876f743cc31471a975e950e66c179d4">setInputTarget</a> (const PointCloudTargetConstPtr &amp;cloud)</td></tr>
<tr class="memdesc:a8876f743cc31471a975e950e66c179d4 inherit pub_methods_classpcl_1_1_iterative_closest_point"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the input target (e.g., the point cloud that we want to align to the target)  <a href="classpcl_1_1_iterative_closest_point.html#a8876f743cc31471a975e950e66c179d4">更多...</a><br /></td></tr>
<tr class="separator:a8876f743cc31471a975e950e66c179d4 inherit pub_methods_classpcl_1_1_iterative_closest_point"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a22c5480a073da9c53fcb0d387e1c997b inherit pub_methods_classpcl_1_1_iterative_closest_point"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_iterative_closest_point.html#a22c5480a073da9c53fcb0d387e1c997b">setUseReciprocalCorrespondences</a> (bool use_reciprocal_correspondence)</td></tr>
<tr class="memdesc:a22c5480a073da9c53fcb0d387e1c997b inherit pub_methods_classpcl_1_1_iterative_closest_point"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set whether to use reciprocal correspondence or not  <a href="classpcl_1_1_iterative_closest_point.html#a22c5480a073da9c53fcb0d387e1c997b">更多...</a><br /></td></tr>
<tr class="separator:a22c5480a073da9c53fcb0d387e1c997b inherit pub_methods_classpcl_1_1_iterative_closest_point"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a767cf980c6f268fb030fe12754ca32e3 inherit pub_methods_classpcl_1_1_iterative_closest_point"><td class="memItemLeft" align="right" valign="top"><a id="a767cf980c6f268fb030fe12754ca32e3"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_iterative_closest_point.html#a767cf980c6f268fb030fe12754ca32e3">getUseReciprocalCorrespondences</a> () const</td></tr>
<tr class="memdesc:a767cf980c6f268fb030fe12754ca32e3 inherit pub_methods_classpcl_1_1_iterative_closest_point"><td class="mdescLeft">&#160;</td><td class="mdescRight">Obtain whether reciprocal correspondence are used or not <br /></td></tr>
<tr class="separator:a767cf980c6f268fb030fe12754ca32e3 inherit pub_methods_classpcl_1_1_iterative_closest_point"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classpcl_1_1_registration"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classpcl_1_1_registration')"><img src="closed.png" alt="-"/>&#160;Public 成员函数 继承自 <a class="el" href="classpcl_1_1_registration.html">pcl::Registration&lt; PointSource, PointTarget, float &gt;</a></td></tr>
<tr class="memitem:a83a7a76a4c9d467c3a7bacdc4062f810 inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a83a7a76a4c9d467c3a7bacdc4062f810"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a83a7a76a4c9d467c3a7bacdc4062f810">Registration</a> ()</td></tr>
<tr class="memdesc:a83a7a76a4c9d467c3a7bacdc4062f810 inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty constructor. <br /></td></tr>
<tr class="separator:a83a7a76a4c9d467c3a7bacdc4062f810 inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a612ce0633b614644e481a0affea2a352 inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a612ce0633b614644e481a0affea2a352"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a612ce0633b614644e481a0affea2a352">~Registration</a> ()</td></tr>
<tr class="memdesc:a612ce0633b614644e481a0affea2a352 inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">destructor. <br /></td></tr>
<tr class="separator:a612ce0633b614644e481a0affea2a352 inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad16bd1099eb60c9ac26fdc6c56058029 inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#ad16bd1099eb60c9ac26fdc6c56058029">setTransformationEstimation</a> (const TransformationEstimationPtr &amp;te)</td></tr>
<tr class="memdesc:ad16bd1099eb60c9ac26fdc6c56058029 inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the transformation estimation object. (e.g., SVD, point to plane etc.)  <a href="classpcl_1_1_registration.html#ad16bd1099eb60c9ac26fdc6c56058029">更多...</a><br /></td></tr>
<tr class="separator:ad16bd1099eb60c9ac26fdc6c56058029 inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a34f8e20116d171898515ed94997c3c7d inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a34f8e20116d171898515ed94997c3c7d">setCorrespondenceEstimation</a> (const CorrespondenceEstimationPtr &amp;ce)</td></tr>
<tr class="memdesc:a34f8e20116d171898515ed94997c3c7d inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the correspondence estimation object. (e.g., regular, reciprocal, normal shooting etc.)  <a href="classpcl_1_1_registration.html#a34f8e20116d171898515ed94997c3c7d">更多...</a><br /></td></tr>
<tr class="separator:a34f8e20116d171898515ed94997c3c7d inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6a111fe9b14dc3c65ca420b640e42de9 inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a6a111fe9b14dc3c65ca420b640e42de9">setInputCloud</a> (const PointCloudSourceConstPtr &amp;cloud)</td></tr>
<tr class="memdesc:a6a111fe9b14dc3c65ca420b640e42de9 inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the input source (e.g., the point cloud that we want to align to the target)  <a href="classpcl_1_1_registration.html#a6a111fe9b14dc3c65ca420b640e42de9">更多...</a><br /></td></tr>
<tr class="separator:a6a111fe9b14dc3c65ca420b640e42de9 inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a27a6eb286aef8d790a6570018e0dfa9b inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a27a6eb286aef8d790a6570018e0dfa9b"></a>
PointCloudSourceConstPtr const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a27a6eb286aef8d790a6570018e0dfa9b">getInputCloud</a> ()</td></tr>
<tr class="memdesc:a27a6eb286aef8d790a6570018e0dfa9b inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the input point cloud dataset target. <br /></td></tr>
<tr class="separator:a27a6eb286aef8d790a6570018e0dfa9b inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a931144f549047b081c413e96a2fd70d6 inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a931144f549047b081c413e96a2fd70d6">setInputSource</a> (const PointCloudSourceConstPtr &amp;cloud)</td></tr>
<tr class="memdesc:a931144f549047b081c413e96a2fd70d6 inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the input source (e.g., the point cloud that we want to align to the target)  <a href="classpcl_1_1_registration.html#a931144f549047b081c413e96a2fd70d6">更多...</a><br /></td></tr>
<tr class="separator:a931144f549047b081c413e96a2fd70d6 inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac0d56239d2f0d7c567f9402a177d3a0e inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="ac0d56239d2f0d7c567f9402a177d3a0e"></a>
PointCloudSourceConstPtr const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#ac0d56239d2f0d7c567f9402a177d3a0e">getInputSource</a> ()</td></tr>
<tr class="memdesc:ac0d56239d2f0d7c567f9402a177d3a0e inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the input point cloud dataset target. <br /></td></tr>
<tr class="separator:ac0d56239d2f0d7c567f9402a177d3a0e inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a97259be9f630f5f21ef60e3e62f8fa47 inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a97259be9f630f5f21ef60e3e62f8fa47"></a>
PointCloudTargetConstPtr const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a97259be9f630f5f21ef60e3e62f8fa47">getInputTarget</a> ()</td></tr>
<tr class="memdesc:a97259be9f630f5f21ef60e3e62f8fa47 inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the input point cloud dataset target. <br /></td></tr>
<tr class="separator:a97259be9f630f5f21ef60e3e62f8fa47 inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a409442a0f43b73e1227335307b1d9ccc inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a409442a0f43b73e1227335307b1d9ccc">setSearchMethodTarget</a> (const KdTreePtr &amp;tree, bool force_no_recompute=false)</td></tr>
<tr class="memdesc:a409442a0f43b73e1227335307b1d9ccc inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the search object used to find correspondences in the target cloud.  <a href="classpcl_1_1_registration.html#a409442a0f43b73e1227335307b1d9ccc">更多...</a><br /></td></tr>
<tr class="separator:a409442a0f43b73e1227335307b1d9ccc inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7600327adbe8c11394c52f13364133cd inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a7600327adbe8c11394c52f13364133cd"></a>
KdTreePtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a7600327adbe8c11394c52f13364133cd">getSearchMethodTarget</a> () const</td></tr>
<tr class="memdesc:a7600327adbe8c11394c52f13364133cd inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the search method used to find correspondences in the target cloud. <br /></td></tr>
<tr class="separator:a7600327adbe8c11394c52f13364133cd inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3bfafcf5966b90f513f52ff0a7a42f37 inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a3bfafcf5966b90f513f52ff0a7a42f37">setSearchMethodSource</a> (const KdTreeReciprocalPtr &amp;tree, bool force_no_recompute=false)</td></tr>
<tr class="memdesc:a3bfafcf5966b90f513f52ff0a7a42f37 inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the search object used to find correspondences in the source cloud (usually used by reciprocal correspondence finding).  <a href="classpcl_1_1_registration.html#a3bfafcf5966b90f513f52ff0a7a42f37">更多...</a><br /></td></tr>
<tr class="separator:a3bfafcf5966b90f513f52ff0a7a42f37 inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:add717357d14e16c3d71eefe8cd658343 inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="add717357d14e16c3d71eefe8cd658343"></a>
KdTreeReciprocalPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#add717357d14e16c3d71eefe8cd658343">getSearchMethodSource</a> () const</td></tr>
<tr class="memdesc:add717357d14e16c3d71eefe8cd658343 inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the search method used to find correspondences in the source cloud. <br /></td></tr>
<tr class="separator:add717357d14e16c3d71eefe8cd658343 inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1e68bd39ac943131dcbf1431f9afe3f3 inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a1e68bd39ac943131dcbf1431f9afe3f3"></a>
Matrix4&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a1e68bd39ac943131dcbf1431f9afe3f3">getFinalTransformation</a> ()</td></tr>
<tr class="memdesc:a1e68bd39ac943131dcbf1431f9afe3f3 inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the final transformation matrix estimated by the registration method. <br /></td></tr>
<tr class="separator:a1e68bd39ac943131dcbf1431f9afe3f3 inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a86b11948c03bee5474b2224bf988f701 inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a86b11948c03bee5474b2224bf988f701"></a>
Matrix4&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a86b11948c03bee5474b2224bf988f701">getLastIncrementalTransformation</a> ()</td></tr>
<tr class="memdesc:a86b11948c03bee5474b2224bf988f701 inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the last incremental transformation matrix estimated by the registration method. <br /></td></tr>
<tr class="separator:a86b11948c03bee5474b2224bf988f701 inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3844d186f7a99d15464368e0f25635ed inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a3844d186f7a99d15464368e0f25635ed">setMaximumIterations</a> (int nr_iterations)</td></tr>
<tr class="memdesc:a3844d186f7a99d15464368e0f25635ed inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the maximum number of iterations the internal optimization should run for.  <a href="classpcl_1_1_registration.html#a3844d186f7a99d15464368e0f25635ed">更多...</a><br /></td></tr>
<tr class="separator:a3844d186f7a99d15464368e0f25635ed inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adf1c20667e8bc292a687c9664fd30735 inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="adf1c20667e8bc292a687c9664fd30735"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#adf1c20667e8bc292a687c9664fd30735">getMaximumIterations</a> ()</td></tr>
<tr class="memdesc:adf1c20667e8bc292a687c9664fd30735 inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the maximum number of iterations the internal optimization should run for, as set by the user. <br /></td></tr>
<tr class="separator:adf1c20667e8bc292a687c9664fd30735 inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1fbe7e76761563c44cb2460376ed5e53 inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a1fbe7e76761563c44cb2460376ed5e53">setRANSACIterations</a> (int ransac_iterations)</td></tr>
<tr class="memdesc:a1fbe7e76761563c44cb2460376ed5e53 inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the number of iterations RANSAC should run for.  <a href="classpcl_1_1_registration.html#a1fbe7e76761563c44cb2460376ed5e53">更多...</a><br /></td></tr>
<tr class="separator:a1fbe7e76761563c44cb2460376ed5e53 inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:affcce068a7d132be1eb299d509390ca1 inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="affcce068a7d132be1eb299d509390ca1"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#affcce068a7d132be1eb299d509390ca1">getRANSACIterations</a> ()</td></tr>
<tr class="memdesc:affcce068a7d132be1eb299d509390ca1 inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the number of iterations RANSAC should run for, as set by the user. <br /></td></tr>
<tr class="separator:affcce068a7d132be1eb299d509390ca1 inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a64db6d25e2707a174dbad28f2484bffe inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a64db6d25e2707a174dbad28f2484bffe">setRANSACOutlierRejectionThreshold</a> (double inlier_threshold)</td></tr>
<tr class="memdesc:a64db6d25e2707a174dbad28f2484bffe inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the inlier distance threshold for the internal RANSAC outlier rejection loop.  <a href="classpcl_1_1_registration.html#a64db6d25e2707a174dbad28f2484bffe">更多...</a><br /></td></tr>
<tr class="separator:a64db6d25e2707a174dbad28f2484bffe inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6b4ae8d2e7b280de376b1e8a3956157e inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a6b4ae8d2e7b280de376b1e8a3956157e"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a6b4ae8d2e7b280de376b1e8a3956157e">getRANSACOutlierRejectionThreshold</a> ()</td></tr>
<tr class="memdesc:a6b4ae8d2e7b280de376b1e8a3956157e inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the inlier distance threshold for the internal outlier rejection loop as set by the user. <br /></td></tr>
<tr class="separator:a6b4ae8d2e7b280de376b1e8a3956157e inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a65596dcc3cb5d2647857226fb3d999a5 inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a65596dcc3cb5d2647857226fb3d999a5">setMaxCorrespondenceDistance</a> (double distance_threshold)</td></tr>
<tr class="memdesc:a65596dcc3cb5d2647857226fb3d999a5 inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the maximum distance threshold between two correspondent points in source &lt;-&gt; target. If the distance is larger than this threshold, the points will be ignored in the alignment process.  <a href="classpcl_1_1_registration.html#a65596dcc3cb5d2647857226fb3d999a5">更多...</a><br /></td></tr>
<tr class="separator:a65596dcc3cb5d2647857226fb3d999a5 inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a71fec358f22d434de9a654b6ffd5949f inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a71fec358f22d434de9a654b6ffd5949f"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a71fec358f22d434de9a654b6ffd5949f">getMaxCorrespondenceDistance</a> ()</td></tr>
<tr class="memdesc:a71fec358f22d434de9a654b6ffd5949f inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the maximum distance threshold between two correspondent points in source &lt;-&gt; target. If the distance is larger than this threshold, the points will be ignored in the alignment process. <br /></td></tr>
<tr class="separator:a71fec358f22d434de9a654b6ffd5949f inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aec74ab878cca8d62fd1be9942685a8c1 inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#aec74ab878cca8d62fd1be9942685a8c1">setTransformationEpsilon</a> (double epsilon)</td></tr>
<tr class="memdesc:aec74ab878cca8d62fd1be9942685a8c1 inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the transformation epsilon (maximum allowable difference between two consecutive transformations) in order for an optimization to be considered as having converged to the final solution.  <a href="classpcl_1_1_registration.html#aec74ab878cca8d62fd1be9942685a8c1">更多...</a><br /></td></tr>
<tr class="separator:aec74ab878cca8d62fd1be9942685a8c1 inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a19024853d8480a0e4bc3193f6f75f7c8 inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a19024853d8480a0e4bc3193f6f75f7c8"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a19024853d8480a0e4bc3193f6f75f7c8">getTransformationEpsilon</a> ()</td></tr>
<tr class="memdesc:a19024853d8480a0e4bc3193f6f75f7c8 inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the transformation epsilon (maximum allowable difference between two consecutive transformations) as set by the user. <br /></td></tr>
<tr class="separator:a19024853d8480a0e4bc3193f6f75f7c8 inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeb0bb4577dbe144bd467d4a9632b84d8 inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#aeb0bb4577dbe144bd467d4a9632b84d8">setEuclideanFitnessEpsilon</a> (double epsilon)</td></tr>
<tr class="memdesc:aeb0bb4577dbe144bd467d4a9632b84d8 inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the maximum allowed Euclidean error between two consecutive steps in the ICP loop, before the algorithm is considered to have converged. The error is estimated as the sum of the differences between correspondences in an Euclidean sense, divided by the number of correspondences.  <a href="classpcl_1_1_registration.html#aeb0bb4577dbe144bd467d4a9632b84d8">更多...</a><br /></td></tr>
<tr class="separator:aeb0bb4577dbe144bd467d4a9632b84d8 inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a71b9fa3e4d1285d16361efe4d0634bde inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a71b9fa3e4d1285d16361efe4d0634bde"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a71b9fa3e4d1285d16361efe4d0634bde">getEuclideanFitnessEpsilon</a> ()</td></tr>
<tr class="memdesc:a71b9fa3e4d1285d16361efe4d0634bde inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the maximum allowed distance error before the algorithm will be considered to have converged, as set by the user. See <a class="el" href="classpcl_1_1_registration.html#aeb0bb4577dbe144bd467d4a9632b84d8">setEuclideanFitnessEpsilon</a> <br /></td></tr>
<tr class="separator:a71b9fa3e4d1285d16361efe4d0634bde inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5da970b4fbd4d1dfbaa4ab76d3d7d22e inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a5da970b4fbd4d1dfbaa4ab76d3d7d22e">setPointRepresentation</a> (const PointRepresentationConstPtr &amp;point_representation)</td></tr>
<tr class="memdesc:a5da970b4fbd4d1dfbaa4ab76d3d7d22e inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a boost shared pointer to the PointRepresentation to be used when comparing points  <a href="classpcl_1_1_registration.html#a5da970b4fbd4d1dfbaa4ab76d3d7d22e">更多...</a><br /></td></tr>
<tr class="separator:a5da970b4fbd4d1dfbaa4ab76d3d7d22e inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac13dcb392c660cf311a689041ec63a5c inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#ac13dcb392c660cf311a689041ec63a5c">registerVisualizationCallback</a> (boost::function&lt; FunctionSignature &gt; &amp;visualizerCallback)</td></tr>
<tr class="memdesc:ac13dcb392c660cf311a689041ec63a5c inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register the user callback function which will be called from registration thread in order to update point cloud obtained after each iteration  <a href="classpcl_1_1_registration.html#ac13dcb392c660cf311a689041ec63a5c">更多...</a><br /></td></tr>
<tr class="separator:ac13dcb392c660cf311a689041ec63a5c inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab26742c383b6f5e86fb96a236fb08728 inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#ab26742c383b6f5e86fb96a236fb08728">getFitnessScore</a> (double max_range=std::numeric_limits&lt; double &gt;::max())</td></tr>
<tr class="memdesc:ab26742c383b6f5e86fb96a236fb08728 inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Obtain the Euclidean fitness score (e.g., sum of squared distances from the source to the target)  <a href="classpcl_1_1_registration.html#ab26742c383b6f5e86fb96a236fb08728">更多...</a><br /></td></tr>
<tr class="separator:ab26742c383b6f5e86fb96a236fb08728 inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4b9c05b613e698af21f3cb048e611adc inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a4b9c05b613e698af21f3cb048e611adc">getFitnessScore</a> (const std::vector&lt; float &gt; &amp;distances_a, const std::vector&lt; float &gt; &amp;distances_b)</td></tr>
<tr class="memdesc:a4b9c05b613e698af21f3cb048e611adc inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Obtain the Euclidean fitness score (e.g., sum of squared distances from the source to the target) from two sets of correspondence distances (distances between source and target points)  <a href="classpcl_1_1_registration.html#a4b9c05b613e698af21f3cb048e611adc">更多...</a><br /></td></tr>
<tr class="separator:a4b9c05b613e698af21f3cb048e611adc inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b91930ed75aaafec420ed223d1a111b inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a7b91930ed75aaafec420ed223d1a111b"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a7b91930ed75aaafec420ed223d1a111b">hasConverged</a> ()</td></tr>
<tr class="memdesc:a7b91930ed75aaafec420ed223d1a111b inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the state of convergence after the last align run <br /></td></tr>
<tr class="separator:a7b91930ed75aaafec420ed223d1a111b inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a96212303ca16b6d60020824086887c4f inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a96212303ca16b6d60020824086887c4f">align</a> (<a class="el" href="classpcl_1_1_point_cloud.html">PointCloudSource</a> &amp;output)</td></tr>
<tr class="memdesc:a96212303ca16b6d60020824086887c4f inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Call the registration algorithm which estimates the transformation and returns the transformed source (input) as <em>output</em>.  <a href="classpcl_1_1_registration.html#a96212303ca16b6d60020824086887c4f">更多...</a><br /></td></tr>
<tr class="separator:a96212303ca16b6d60020824086887c4f inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab1d64f86162b2df716ead8d978579c11 inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#ab1d64f86162b2df716ead8d978579c11">align</a> (<a class="el" href="classpcl_1_1_point_cloud.html">PointCloudSource</a> &amp;output, const Matrix4 &amp;guess)</td></tr>
<tr class="memdesc:ab1d64f86162b2df716ead8d978579c11 inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Call the registration algorithm which estimates the transformation and returns the transformed source (input) as <em>output</em>.  <a href="classpcl_1_1_registration.html#ab1d64f86162b2df716ead8d978579c11">更多...</a><br /></td></tr>
<tr class="separator:ab1d64f86162b2df716ead8d978579c11 inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a26eae6a42450893ca1c2ed81560159f2 inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a26eae6a42450893ca1c2ed81560159f2"></a>
const std::string &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a26eae6a42450893ca1c2ed81560159f2">getClassName</a> () const</td></tr>
<tr class="memdesc:a26eae6a42450893ca1c2ed81560159f2 inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Abstract class get name method. <br /></td></tr>
<tr class="separator:a26eae6a42450893ca1c2ed81560159f2 inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0b42c13696bef68c50d5c3135bc573cf inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a0b42c13696bef68c50d5c3135bc573cf"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a0b42c13696bef68c50d5c3135bc573cf">initCompute</a> ()</td></tr>
<tr class="memdesc:a0b42c13696bef68c50d5c3135bc573cf inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Internal computation initalization. <br /></td></tr>
<tr class="separator:a0b42c13696bef68c50d5c3135bc573cf inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae210269f0404556b8dd7f4306084a91d inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="ae210269f0404556b8dd7f4306084a91d"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#ae210269f0404556b8dd7f4306084a91d">initComputeReciprocal</a> ()</td></tr>
<tr class="memdesc:ae210269f0404556b8dd7f4306084a91d inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Internal computation when reciprocal lookup is needed <br /></td></tr>
<tr class="separator:ae210269f0404556b8dd7f4306084a91d inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a663e64d6d5103eb937addd3e33104cf6 inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a663e64d6d5103eb937addd3e33104cf6">addCorrespondenceRejector</a> (const CorrespondenceRejectorPtr &amp;rejector)</td></tr>
<tr class="memdesc:a663e64d6d5103eb937addd3e33104cf6 inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a new correspondence rejector to the list  <a href="classpcl_1_1_registration.html#a663e64d6d5103eb937addd3e33104cf6">更多...</a><br /></td></tr>
<tr class="separator:a663e64d6d5103eb937addd3e33104cf6 inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac0c221d8f1151096721db3817610c9d9 inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="ac0c221d8f1151096721db3817610c9d9"></a>
std::vector&lt; CorrespondenceRejectorPtr &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#ac0c221d8f1151096721db3817610c9d9">getCorrespondenceRejectors</a> ()</td></tr>
<tr class="memdesc:ac0c221d8f1151096721db3817610c9d9 inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the list of correspondence rejectors. <br /></td></tr>
<tr class="separator:ac0c221d8f1151096721db3817610c9d9 inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a33d49f38bcb804bb893a14e3cd4ed31e inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a33d49f38bcb804bb893a14e3cd4ed31e">removeCorrespondenceRejector</a> (unsigned int i)</td></tr>
<tr class="memdesc:a33d49f38bcb804bb893a14e3cd4ed31e inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove the i-th correspondence rejector in the list  <a href="classpcl_1_1_registration.html#a33d49f38bcb804bb893a14e3cd4ed31e">更多...</a><br /></td></tr>
<tr class="separator:a33d49f38bcb804bb893a14e3cd4ed31e inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a169aeb5141fc6e1cec83582ae284aeaa inherit pub_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a169aeb5141fc6e1cec83582ae284aeaa"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a169aeb5141fc6e1cec83582ae284aeaa">clearCorrespondenceRejectors</a> ()</td></tr>
<tr class="memdesc:a169aeb5141fc6e1cec83582ae284aeaa inherit pub_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the list of correspondence rejectors. <br /></td></tr>
<tr class="separator:a169aeb5141fc6e1cec83582ae284aeaa inherit pub_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classpcl_1_1_p_c_l_base"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classpcl_1_1_p_c_l_base')"><img src="closed.png" alt="-"/>&#160;Public 成员函数 继承自 <a class="el" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase&lt; PointSource &gt;</a></td></tr>
<tr class="memitem:af4fbc5eb005057f8a0fc6d60bde595df inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="af4fbc5eb005057f8a0fc6d60bde595df"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#af4fbc5eb005057f8a0fc6d60bde595df">PCLBase</a> ()</td></tr>
<tr class="memdesc:af4fbc5eb005057f8a0fc6d60bde595df inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty constructor. <br /></td></tr>
<tr class="separator:af4fbc5eb005057f8a0fc6d60bde595df inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7a6dd7a91275d7737cf1b18005b47244 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a7a6dd7a91275d7737cf1b18005b47244"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a7a6dd7a91275d7737cf1b18005b47244">PCLBase</a> (const <a class="el" href="classpcl_1_1_p_c_l_base.html">PCLBase</a> &amp;base)</td></tr>
<tr class="memdesc:a7a6dd7a91275d7737cf1b18005b47244 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy constructor. <br /></td></tr>
<tr class="separator:a7a6dd7a91275d7737cf1b18005b47244 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad5d6846e98e59c37dcc3dc9958d53966 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ad5d6846e98e59c37dcc3dc9958d53966"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#ad5d6846e98e59c37dcc3dc9958d53966">~PCLBase</a> ()</td></tr>
<tr class="memdesc:ad5d6846e98e59c37dcc3dc9958d53966 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br /></td></tr>
<tr class="separator:ad5d6846e98e59c37dcc3dc9958d53966 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8cd745c4f7a792212f4fc3720b9d46ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a8cd745c4f7a792212f4fc3720b9d46ea"></a>
PointCloudConstPtr const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a8cd745c4f7a792212f4fc3720b9d46ea">getInputCloud</a> () const</td></tr>
<tr class="memdesc:a8cd745c4f7a792212f4fc3720b9d46ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the input point cloud dataset. <br /></td></tr>
<tr class="separator:a8cd745c4f7a792212f4fc3720b9d46ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab219359de6eb34c9d51e2e976dd1a0d1 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#ab219359de6eb34c9d51e2e976dd1a0d1">setIndices</a> (const IndicesPtr &amp;indices)</td></tr>
<tr class="memdesc:ab219359de6eb34c9d51e2e976dd1a0d1 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the vector of indices that represents the input data.  <a href="classpcl_1_1_p_c_l_base.html#ab219359de6eb34c9d51e2e976dd1a0d1">更多...</a><br /></td></tr>
<tr class="separator:ab219359de6eb34c9d51e2e976dd1a0d1 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a436c68c74b31e4dd00000adfbb11ca7c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a436c68c74b31e4dd00000adfbb11ca7c">setIndices</a> (const IndicesConstPtr &amp;indices)</td></tr>
<tr class="memdesc:a436c68c74b31e4dd00000adfbb11ca7c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the vector of indices that represents the input data.  <a href="classpcl_1_1_p_c_l_base.html#a436c68c74b31e4dd00000adfbb11ca7c">更多...</a><br /></td></tr>
<tr class="separator:a436c68c74b31e4dd00000adfbb11ca7c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af9cc90d8364ce968566f75800d3773ca inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#af9cc90d8364ce968566f75800d3773ca">setIndices</a> (const PointIndicesConstPtr &amp;indices)</td></tr>
<tr class="memdesc:af9cc90d8364ce968566f75800d3773ca inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the vector of indices that represents the input data.  <a href="classpcl_1_1_p_c_l_base.html#af9cc90d8364ce968566f75800d3773ca">更多...</a><br /></td></tr>
<tr class="separator:af9cc90d8364ce968566f75800d3773ca inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a930c7a6375fdf65ff8cfdb4eb4a6d996 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a930c7a6375fdf65ff8cfdb4eb4a6d996">setIndices</a> (size_t row_start, size_t col_start, size_t nb_rows, size_t nb_cols)</td></tr>
<tr class="memdesc:a930c7a6375fdf65ff8cfdb4eb4a6d996 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the indices for the points laying within an interest region of the point cloud.  <a href="classpcl_1_1_p_c_l_base.html#a930c7a6375fdf65ff8cfdb4eb4a6d996">更多...</a><br /></td></tr>
<tr class="separator:a930c7a6375fdf65ff8cfdb4eb4a6d996 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a058753dd4de73d3d0062fe2e452fba3c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a058753dd4de73d3d0062fe2e452fba3c"></a>
IndicesPtr const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a058753dd4de73d3d0062fe2e452fba3c">getIndices</a> ()</td></tr>
<tr class="memdesc:a058753dd4de73d3d0062fe2e452fba3c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the vector of indices used. <br /></td></tr>
<tr class="separator:a058753dd4de73d3d0062fe2e452fba3c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acae187b37230758959572ceb1e6e2045 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="acae187b37230758959572ceb1e6e2045"></a>
IndicesConstPtr const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#acae187b37230758959572ceb1e6e2045">getIndices</a> () const</td></tr>
<tr class="memdesc:acae187b37230758959572ceb1e6e2045 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the vector of indices used. <br /></td></tr>
<tr class="separator:acae187b37230758959572ceb1e6e2045 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7335fedb0af0930b9d1dedcb54ba201 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">const PointSource &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#af7335fedb0af0930b9d1dedcb54ba201">operator[]</a> (size_t pos) const</td></tr>
<tr class="memdesc:af7335fedb0af0930b9d1dedcb54ba201 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Override PointCloud operator[] to shorten code  <a href="classpcl_1_1_p_c_l_base.html#af7335fedb0af0930b9d1dedcb54ba201">更多...</a><br /></td></tr>
<tr class="separator:af7335fedb0af0930b9d1dedcb54ba201 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected 成员函数</h2></td></tr>
<tr class="memitem:a0de169e63fec513a36d93f3912e790b7"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_joint_iterative_closest_point.html#a0de169e63fec513a36d93f3912e790b7">computeTransformation</a> (<a class="el" href="classpcl_1_1_point_cloud.html">PointCloudSource</a> &amp;output, const Matrix4 &amp;guess)</td></tr>
<tr class="memdesc:a0de169e63fec513a36d93f3912e790b7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Rigid transformation computation method with initial guess.  <a href="classpcl_1_1_joint_iterative_closest_point.html#a0de169e63fec513a36d93f3912e790b7">更多...</a><br /></td></tr>
<tr class="separator:a0de169e63fec513a36d93f3912e790b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3a115a1c3195878088cef67a9bb32120"><td class="memItemLeft" align="right" valign="top"><a id="a3a115a1c3195878088cef67a9bb32120"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_joint_iterative_closest_point.html#a3a115a1c3195878088cef67a9bb32120">determineRequiredBlobData</a> ()</td></tr>
<tr class="memdesc:a3a115a1c3195878088cef67a9bb32120"><td class="mdescLeft">&#160;</td><td class="mdescRight">Looks at the Estimators and Rejectors and determines whether their blob-setter methods need to be called <br /></td></tr>
<tr class="separator:a3a115a1c3195878088cef67a9bb32120"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classpcl_1_1_iterative_closest_point"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classpcl_1_1_iterative_closest_point')"><img src="closed.png" alt="-"/>&#160;Protected 成员函数 继承自 <a class="el" href="classpcl_1_1_iterative_closest_point.html">pcl::IterativeClosestPoint&lt; PointSource, PointTarget, float &gt;</a></td></tr>
<tr class="memitem:a9e5609b6e348a9592b12871d175dabbf inherit pro_methods_classpcl_1_1_iterative_closest_point"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_iterative_closest_point.html#a9e5609b6e348a9592b12871d175dabbf">transformCloud</a> (const PointCloudSource &amp;input, PointCloudSource &amp;output, const Matrix4 &amp;transform)</td></tr>
<tr class="memdesc:a9e5609b6e348a9592b12871d175dabbf inherit pro_methods_classpcl_1_1_iterative_closest_point"><td class="mdescLeft">&#160;</td><td class="mdescRight">Apply a rigid transform to a given dataset. Here we check whether whether the dataset has surface normals in addition to XYZ, and rotate normals as well.  <a href="classpcl_1_1_iterative_closest_point.html#a9e5609b6e348a9592b12871d175dabbf">更多...</a><br /></td></tr>
<tr class="separator:a9e5609b6e348a9592b12871d175dabbf inherit pro_methods_classpcl_1_1_iterative_closest_point"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classpcl_1_1_registration"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classpcl_1_1_registration')"><img src="closed.png" alt="-"/>&#160;Protected 成员函数 继承自 <a class="el" href="classpcl_1_1_registration.html">pcl::Registration&lt; PointSource, PointTarget, float &gt;</a></td></tr>
<tr class="memitem:abbeeee9510e44239d47b3c8079ee7c20 inherit pro_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#abbeeee9510e44239d47b3c8079ee7c20">searchForNeighbors</a> (const <a class="el" href="classpcl_1_1_point_cloud.html">PointCloudSource</a> &amp;cloud, int index, std::vector&lt; int &gt; &amp;indices, std::vector&lt; float &gt; &amp;distances)</td></tr>
<tr class="memdesc:abbeeee9510e44239d47b3c8079ee7c20 inherit pro_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Search for the closest nearest neighbor of a given point.  <a href="classpcl_1_1_registration.html#abbeeee9510e44239d47b3c8079ee7c20">更多...</a><br /></td></tr>
<tr class="separator:abbeeee9510e44239d47b3c8079ee7c20 inherit pro_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae5eb5d425e7cc8a998f0e4b1b253a6f5 inherit pro_methods_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="ae5eb5d425e7cc8a998f0e4b1b253a6f5"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#ae5eb5d425e7cc8a998f0e4b1b253a6f5">computeTransformation</a> (<a class="el" href="classpcl_1_1_point_cloud.html">PointCloudSource</a> &amp;output, const Matrix4 &amp;guess)=0</td></tr>
<tr class="memdesc:ae5eb5d425e7cc8a998f0e4b1b253a6f5 inherit pro_methods_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Abstract transformation computation method with initial guess <br /></td></tr>
<tr class="separator:ae5eb5d425e7cc8a998f0e4b1b253a6f5 inherit pro_methods_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classpcl_1_1_p_c_l_base"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classpcl_1_1_p_c_l_base')"><img src="closed.png" alt="-"/>&#160;Protected 成员函数 继承自 <a class="el" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase&lt; PointSource &gt;</a></td></tr>
<tr class="memitem:acceb20854934f4cf77e266eb5a44d4f0 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#acceb20854934f4cf77e266eb5a44d4f0">initCompute</a> ()</td></tr>
<tr class="memdesc:acceb20854934f4cf77e266eb5a44d4f0 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method should get called before starting the actual computation.  <a href="classpcl_1_1_p_c_l_base.html#acceb20854934f4cf77e266eb5a44d4f0">更多...</a><br /></td></tr>
<tr class="separator:acceb20854934f4cf77e266eb5a44d4f0 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc426c4eebb94b7734d4fa556bff1420 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="afc426c4eebb94b7734d4fa556bff1420"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#afc426c4eebb94b7734d4fa556bff1420">deinitCompute</a> ()</td></tr>
<tr class="memdesc:afc426c4eebb94b7734d4fa556bff1420 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method should get called after finishing the actual computation. <br /></td></tr>
<tr class="separator:afc426c4eebb94b7734d4fa556bff1420 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected 属性</h2></td></tr>
<tr class="memitem:a7bfee4e32c98f5cdce6d587d87c9f457"><td class="memItemLeft" align="right" valign="top"><a id="a7bfee4e32c98f5cdce6d587d87c9f457"></a>
std::vector&lt; PointCloudSourceConstPtr &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>sources_</b></td></tr>
<tr class="separator:a7bfee4e32c98f5cdce6d587d87c9f457"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a02a7e7464fc46c59a313464751fedece"><td class="memItemLeft" align="right" valign="top"><a id="a02a7e7464fc46c59a313464751fedece"></a>
std::vector&lt; PointCloudTargetConstPtr &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>targets_</b></td></tr>
<tr class="separator:a02a7e7464fc46c59a313464751fedece"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad35b53240f93f63a9270d7e790960947"><td class="memItemLeft" align="right" valign="top"><a id="ad35b53240f93f63a9270d7e790960947"></a>
std::vector&lt; CorrespondenceEstimationPtr &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>correspondence_estimations_</b></td></tr>
<tr class="separator:ad35b53240f93f63a9270d7e790960947"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classpcl_1_1_iterative_closest_point"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classpcl_1_1_iterative_closest_point')"><img src="closed.png" alt="-"/>&#160;Protected 属性 继承自 <a class="el" href="classpcl_1_1_iterative_closest_point.html">pcl::IterativeClosestPoint&lt; PointSource, PointTarget, float &gt;</a></td></tr>
<tr class="memitem:a18878bca5d363e3179a45024540a3e87 inherit pro_attribs_classpcl_1_1_iterative_closest_point"><td class="memItemLeft" align="right" valign="top"><a id="a18878bca5d363e3179a45024540a3e87"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_iterative_closest_point.html#a18878bca5d363e3179a45024540a3e87">x_idx_offset_</a></td></tr>
<tr class="memdesc:a18878bca5d363e3179a45024540a3e87 inherit pro_attribs_classpcl_1_1_iterative_closest_point"><td class="mdescLeft">&#160;</td><td class="mdescRight">XYZ fields offset. <br /></td></tr>
<tr class="separator:a18878bca5d363e3179a45024540a3e87 inherit pro_attribs_classpcl_1_1_iterative_closest_point"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a190834427e02893366e5e2bc8f865829 inherit pro_attribs_classpcl_1_1_iterative_closest_point"><td class="memItemLeft" align="right" valign="top"><a id="a190834427e02893366e5e2bc8f865829"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>y_idx_offset_</b></td></tr>
<tr class="separator:a190834427e02893366e5e2bc8f865829 inherit pro_attribs_classpcl_1_1_iterative_closest_point"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad9a73dda587a49ef9cbb39410285090d inherit pro_attribs_classpcl_1_1_iterative_closest_point"><td class="memItemLeft" align="right" valign="top"><a id="ad9a73dda587a49ef9cbb39410285090d"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>z_idx_offset_</b></td></tr>
<tr class="separator:ad9a73dda587a49ef9cbb39410285090d inherit pro_attribs_classpcl_1_1_iterative_closest_point"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0d653506661f5d101c50253a46dc3ce0 inherit pro_attribs_classpcl_1_1_iterative_closest_point"><td class="memItemLeft" align="right" valign="top"><a id="a0d653506661f5d101c50253a46dc3ce0"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_iterative_closest_point.html#a0d653506661f5d101c50253a46dc3ce0">nx_idx_offset_</a></td></tr>
<tr class="memdesc:a0d653506661f5d101c50253a46dc3ce0 inherit pro_attribs_classpcl_1_1_iterative_closest_point"><td class="mdescLeft">&#160;</td><td class="mdescRight">Normal fields offset. <br /></td></tr>
<tr class="separator:a0d653506661f5d101c50253a46dc3ce0 inherit pro_attribs_classpcl_1_1_iterative_closest_point"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1ef29338b36d09141fd19628b9d2882b inherit pro_attribs_classpcl_1_1_iterative_closest_point"><td class="memItemLeft" align="right" valign="top"><a id="a1ef29338b36d09141fd19628b9d2882b"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>ny_idx_offset_</b></td></tr>
<tr class="separator:a1ef29338b36d09141fd19628b9d2882b inherit pro_attribs_classpcl_1_1_iterative_closest_point"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acadb589d6e6d7d974bb3df3e7abbe975 inherit pro_attribs_classpcl_1_1_iterative_closest_point"><td class="memItemLeft" align="right" valign="top"><a id="acadb589d6e6d7d974bb3df3e7abbe975"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>nz_idx_offset_</b></td></tr>
<tr class="separator:acadb589d6e6d7d974bb3df3e7abbe975 inherit pro_attribs_classpcl_1_1_iterative_closest_point"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1c4cebbb2d9789f5f55e6831e335b15d inherit pro_attribs_classpcl_1_1_iterative_closest_point"><td class="memItemLeft" align="right" valign="top"><a id="a1c4cebbb2d9789f5f55e6831e335b15d"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_iterative_closest_point.html#a1c4cebbb2d9789f5f55e6831e335b15d">use_reciprocal_correspondence_</a></td></tr>
<tr class="memdesc:a1c4cebbb2d9789f5f55e6831e335b15d inherit pro_attribs_classpcl_1_1_iterative_closest_point"><td class="mdescLeft">&#160;</td><td class="mdescRight">The correspondence type used for correspondence estimation. <br /></td></tr>
<tr class="separator:a1c4cebbb2d9789f5f55e6831e335b15d inherit pro_attribs_classpcl_1_1_iterative_closest_point"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9c473bc941c384d52d8af7cc34e4d703 inherit pro_attribs_classpcl_1_1_iterative_closest_point"><td class="memItemLeft" align="right" valign="top"><a id="a9c473bc941c384d52d8af7cc34e4d703"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_iterative_closest_point.html#a9c473bc941c384d52d8af7cc34e4d703">source_has_normals_</a></td></tr>
<tr class="memdesc:a9c473bc941c384d52d8af7cc34e4d703 inherit pro_attribs_classpcl_1_1_iterative_closest_point"><td class="mdescLeft">&#160;</td><td class="mdescRight">Internal check whether source dataset has normals or not. <br /></td></tr>
<tr class="separator:a9c473bc941c384d52d8af7cc34e4d703 inherit pro_attribs_classpcl_1_1_iterative_closest_point"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aed96da82ec7cdef9e3bad46c28dfc9be inherit pro_attribs_classpcl_1_1_iterative_closest_point"><td class="memItemLeft" align="right" valign="top"><a id="aed96da82ec7cdef9e3bad46c28dfc9be"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_iterative_closest_point.html#aed96da82ec7cdef9e3bad46c28dfc9be">target_has_normals_</a></td></tr>
<tr class="memdesc:aed96da82ec7cdef9e3bad46c28dfc9be inherit pro_attribs_classpcl_1_1_iterative_closest_point"><td class="mdescLeft">&#160;</td><td class="mdescRight">Internal check whether target dataset has normals or not. <br /></td></tr>
<tr class="separator:aed96da82ec7cdef9e3bad46c28dfc9be inherit pro_attribs_classpcl_1_1_iterative_closest_point"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ed9b4b47ccd4dc2da120a021d73122c inherit pro_attribs_classpcl_1_1_iterative_closest_point"><td class="memItemLeft" align="right" valign="top"><a id="a4ed9b4b47ccd4dc2da120a021d73122c"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_iterative_closest_point.html#a4ed9b4b47ccd4dc2da120a021d73122c">need_source_blob_</a></td></tr>
<tr class="memdesc:a4ed9b4b47ccd4dc2da120a021d73122c inherit pro_attribs_classpcl_1_1_iterative_closest_point"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks for whether estimators and rejectors need various data <br /></td></tr>
<tr class="separator:a4ed9b4b47ccd4dc2da120a021d73122c inherit pro_attribs_classpcl_1_1_iterative_closest_point"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2b5280d4564584ec9b1483210db067ad inherit pro_attribs_classpcl_1_1_iterative_closest_point"><td class="memItemLeft" align="right" valign="top"><a id="a2b5280d4564584ec9b1483210db067ad"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>need_target_blob_</b></td></tr>
<tr class="separator:a2b5280d4564584ec9b1483210db067ad inherit pro_attribs_classpcl_1_1_iterative_closest_point"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classpcl_1_1_registration"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classpcl_1_1_registration')"><img src="closed.png" alt="-"/>&#160;Protected 属性 继承自 <a class="el" href="classpcl_1_1_registration.html">pcl::Registration&lt; PointSource, PointTarget, float &gt;</a></td></tr>
<tr class="memitem:a1e493af70763e05bcaf5ecd0ed7be63d inherit pro_attribs_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a1e493af70763e05bcaf5ecd0ed7be63d"></a>
std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a1e493af70763e05bcaf5ecd0ed7be63d">reg_name_</a></td></tr>
<tr class="memdesc:a1e493af70763e05bcaf5ecd0ed7be63d inherit pro_attribs_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">The registration method name. <br /></td></tr>
<tr class="separator:a1e493af70763e05bcaf5ecd0ed7be63d inherit pro_attribs_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a79b6170328705f29854aba00c4feb66d inherit pro_attribs_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a79b6170328705f29854aba00c4feb66d"></a>
KdTreePtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a79b6170328705f29854aba00c4feb66d">tree_</a></td></tr>
<tr class="memdesc:a79b6170328705f29854aba00c4feb66d inherit pro_attribs_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">A pointer to the spatial search object. <br /></td></tr>
<tr class="separator:a79b6170328705f29854aba00c4feb66d inherit pro_attribs_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3362d946f4b60e2628dc02e2af1f24fd inherit pro_attribs_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a3362d946f4b60e2628dc02e2af1f24fd"></a>
KdTreeReciprocalPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a3362d946f4b60e2628dc02e2af1f24fd">tree_reciprocal_</a></td></tr>
<tr class="memdesc:a3362d946f4b60e2628dc02e2af1f24fd inherit pro_attribs_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">A pointer to the spatial search object of the source. <br /></td></tr>
<tr class="separator:a3362d946f4b60e2628dc02e2af1f24fd inherit pro_attribs_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6957c3193d73098cb0535d6625d591d4 inherit pro_attribs_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a6957c3193d73098cb0535d6625d591d4"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a6957c3193d73098cb0535d6625d591d4">nr_iterations_</a></td></tr>
<tr class="memdesc:a6957c3193d73098cb0535d6625d591d4 inherit pro_attribs_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">The number of iterations the internal optimization ran for (used internally). <br /></td></tr>
<tr class="separator:a6957c3193d73098cb0535d6625d591d4 inherit pro_attribs_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa776d097d20137f2702a275d931989d2 inherit pro_attribs_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="aa776d097d20137f2702a275d931989d2"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#aa776d097d20137f2702a275d931989d2">max_iterations_</a></td></tr>
<tr class="memdesc:aa776d097d20137f2702a275d931989d2 inherit pro_attribs_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">The maximum number of iterations the internal optimization should run for. The default value is 10. <br /></td></tr>
<tr class="separator:aa776d097d20137f2702a275d931989d2 inherit pro_attribs_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9099e6970624c4ee91817f3f97f82f7f inherit pro_attribs_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a9099e6970624c4ee91817f3f97f82f7f"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a9099e6970624c4ee91817f3f97f82f7f">ransac_iterations_</a></td></tr>
<tr class="memdesc:a9099e6970624c4ee91817f3f97f82f7f inherit pro_attribs_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">The number of iterations RANSAC should run for. <br /></td></tr>
<tr class="separator:a9099e6970624c4ee91817f3f97f82f7f inherit pro_attribs_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af9ac08a379a3b5db44c5c502cf6a882e inherit pro_attribs_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="af9ac08a379a3b5db44c5c502cf6a882e"></a>
PointCloudTargetConstPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#af9ac08a379a3b5db44c5c502cf6a882e">target_</a></td></tr>
<tr class="memdesc:af9ac08a379a3b5db44c5c502cf6a882e inherit pro_attribs_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">The input point cloud dataset target. <br /></td></tr>
<tr class="separator:af9ac08a379a3b5db44c5c502cf6a882e inherit pro_attribs_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a023e79a041ee70e8383654432cf5a71e inherit pro_attribs_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a023e79a041ee70e8383654432cf5a71e"></a>
Matrix4&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a023e79a041ee70e8383654432cf5a71e">final_transformation_</a></td></tr>
<tr class="memdesc:a023e79a041ee70e8383654432cf5a71e inherit pro_attribs_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">The final transformation matrix estimated by the registration method after N iterations. <br /></td></tr>
<tr class="separator:a023e79a041ee70e8383654432cf5a71e inherit pro_attribs_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2cdeaab1c7d5e156a7bd35ee71c1f0db inherit pro_attribs_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a2cdeaab1c7d5e156a7bd35ee71c1f0db"></a>
Matrix4&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a2cdeaab1c7d5e156a7bd35ee71c1f0db">transformation_</a></td></tr>
<tr class="memdesc:a2cdeaab1c7d5e156a7bd35ee71c1f0db inherit pro_attribs_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">The transformation matrix estimated by the registration method. <br /></td></tr>
<tr class="separator:a2cdeaab1c7d5e156a7bd35ee71c1f0db inherit pro_attribs_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8d0064ba2f733ef07476f42de09a656f inherit pro_attribs_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a8d0064ba2f733ef07476f42de09a656f"></a>
Matrix4&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a8d0064ba2f733ef07476f42de09a656f">previous_transformation_</a></td></tr>
<tr class="memdesc:a8d0064ba2f733ef07476f42de09a656f inherit pro_attribs_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">The previous transformation matrix estimated by the registration method (used internally). <br /></td></tr>
<tr class="separator:a8d0064ba2f733ef07476f42de09a656f inherit pro_attribs_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adbd6519634f433c0be2fd640c0c75108 inherit pro_attribs_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="adbd6519634f433c0be2fd640c0c75108"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#adbd6519634f433c0be2fd640c0c75108">transformation_epsilon_</a></td></tr>
<tr class="memdesc:adbd6519634f433c0be2fd640c0c75108 inherit pro_attribs_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">The maximum difference between two consecutive transformations in order to consider convergence (user defined). <br /></td></tr>
<tr class="separator:adbd6519634f433c0be2fd640c0c75108 inherit pro_attribs_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab5bf2297e961c3012bffe79fdd2d495d inherit pro_attribs_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="ab5bf2297e961c3012bffe79fdd2d495d"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#ab5bf2297e961c3012bffe79fdd2d495d">euclidean_fitness_epsilon_</a></td></tr>
<tr class="memdesc:ab5bf2297e961c3012bffe79fdd2d495d inherit pro_attribs_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">The maximum allowed Euclidean error between two consecutive steps in the ICP loop, before the algorithm is considered to have converged. The error is estimated as the sum of the differences between correspondences in an Euclidean sense, divided by the number of correspondences. <br /></td></tr>
<tr class="separator:ab5bf2297e961c3012bffe79fdd2d495d inherit pro_attribs_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a15aa975f33a8f22573bad118ddda10dd inherit pro_attribs_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a15aa975f33a8f22573bad118ddda10dd"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a15aa975f33a8f22573bad118ddda10dd">corr_dist_threshold_</a></td></tr>
<tr class="memdesc:a15aa975f33a8f22573bad118ddda10dd inherit pro_attribs_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">The maximum distance threshold between two correspondent points in source &lt;-&gt; target. If the distance is larger than this threshold, the points will be ignored in the alignement process. <br /></td></tr>
<tr class="separator:a15aa975f33a8f22573bad118ddda10dd inherit pro_attribs_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab5d7a9089d15932a78775dbb0b30d42f inherit pro_attribs_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="ab5d7a9089d15932a78775dbb0b30d42f"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#ab5d7a9089d15932a78775dbb0b30d42f">inlier_threshold_</a></td></tr>
<tr class="memdesc:ab5d7a9089d15932a78775dbb0b30d42f inherit pro_attribs_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">The inlier distance threshold for the internal RANSAC outlier rejection loop. The method considers a point to be an inlier, if the distance between the target data index and the transformed source index is smaller than the given inlier distance threshold. The default value is 0.05. <br /></td></tr>
<tr class="separator:ab5d7a9089d15932a78775dbb0b30d42f inherit pro_attribs_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8e94793b677e107410ebb29ea2f931e9 inherit pro_attribs_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a8e94793b677e107410ebb29ea2f931e9"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a8e94793b677e107410ebb29ea2f931e9">converged_</a></td></tr>
<tr class="memdesc:a8e94793b677e107410ebb29ea2f931e9 inherit pro_attribs_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Holds internal convergence state, given user parameters. <br /></td></tr>
<tr class="separator:a8e94793b677e107410ebb29ea2f931e9 inherit pro_attribs_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae33bc2efe08f2fff1a35df1b3d602036 inherit pro_attribs_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="ae33bc2efe08f2fff1a35df1b3d602036"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#ae33bc2efe08f2fff1a35df1b3d602036">min_number_correspondences_</a></td></tr>
<tr class="memdesc:ae33bc2efe08f2fff1a35df1b3d602036 inherit pro_attribs_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">The minimum number of correspondences that the algorithm needs before attempting to estimate the transformation. The default value is 3. <br /></td></tr>
<tr class="separator:ae33bc2efe08f2fff1a35df1b3d602036 inherit pro_attribs_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a98f1c160391fff07f34339b63286e228 inherit pro_attribs_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a98f1c160391fff07f34339b63286e228"></a>
CorrespondencesPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a98f1c160391fff07f34339b63286e228">correspondences_</a></td></tr>
<tr class="memdesc:a98f1c160391fff07f34339b63286e228 inherit pro_attribs_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">The set of correspondences determined at this ICP step. <br /></td></tr>
<tr class="separator:a98f1c160391fff07f34339b63286e228 inherit pro_attribs_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a99baaa7e513bda9103c58fd1471557ed inherit pro_attribs_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a99baaa7e513bda9103c58fd1471557ed"></a>
TransformationEstimationPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a99baaa7e513bda9103c58fd1471557ed">transformation_estimation_</a></td></tr>
<tr class="memdesc:a99baaa7e513bda9103c58fd1471557ed inherit pro_attribs_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">A TransformationEstimation object, used to calculate the 4x4 rigid transformation. <br /></td></tr>
<tr class="separator:a99baaa7e513bda9103c58fd1471557ed inherit pro_attribs_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5f5e6122a988e5114f4caa1212920444 inherit pro_attribs_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a5f5e6122a988e5114f4caa1212920444"></a>
CorrespondenceEstimationPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a5f5e6122a988e5114f4caa1212920444">correspondence_estimation_</a></td></tr>
<tr class="memdesc:a5f5e6122a988e5114f4caa1212920444 inherit pro_attribs_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">A CorrespondenceEstimation object, used to estimate correspondences between the source and the target cloud. <br /></td></tr>
<tr class="separator:a5f5e6122a988e5114f4caa1212920444 inherit pro_attribs_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adc73c4731a1e01ac100ebf4659578e1c inherit pro_attribs_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="adc73c4731a1e01ac100ebf4659578e1c"></a>
std::vector&lt; CorrespondenceRejectorPtr &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#adc73c4731a1e01ac100ebf4659578e1c">correspondence_rejectors_</a></td></tr>
<tr class="memdesc:adc73c4731a1e01ac100ebf4659578e1c inherit pro_attribs_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">The list of correspondence rejectors to use. <br /></td></tr>
<tr class="separator:adc73c4731a1e01ac100ebf4659578e1c inherit pro_attribs_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0167493576dabedd7678aa6811dee363 inherit pro_attribs_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a0167493576dabedd7678aa6811dee363"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a0167493576dabedd7678aa6811dee363">target_cloud_updated_</a></td></tr>
<tr class="memdesc:a0167493576dabedd7678aa6811dee363 inherit pro_attribs_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Variable that stores whether we have a new target cloud, meaning we need to pre-process it again. This way, we avoid rebuilding the kd-tree for the target cloud every time the determineCorrespondences () method is called. <br /></td></tr>
<tr class="separator:a0167493576dabedd7678aa6811dee363 inherit pro_attribs_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aefd89f31379081d9cc75e3ce9ab1a947 inherit pro_attribs_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="aefd89f31379081d9cc75e3ce9ab1a947"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#aefd89f31379081d9cc75e3ce9ab1a947">source_cloud_updated_</a></td></tr>
<tr class="memdesc:aefd89f31379081d9cc75e3ce9ab1a947 inherit pro_attribs_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Variable that stores whether we have a new source cloud, meaning we need to pre-process it again. This way, we avoid rebuilding the reciprocal kd-tree for the source cloud every time the determineCorrespondences () method is called. <br /></td></tr>
<tr class="separator:aefd89f31379081d9cc75e3ce9ab1a947 inherit pro_attribs_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6335de3036d6e0fe9a3942cd6f30c87f inherit pro_attribs_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a6335de3036d6e0fe9a3942cd6f30c87f"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a6335de3036d6e0fe9a3942cd6f30c87f">force_no_recompute_</a></td></tr>
<tr class="memdesc:a6335de3036d6e0fe9a3942cd6f30c87f inherit pro_attribs_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">A flag which, if set, means the tree operating on the target cloud will never be recomputed <br /></td></tr>
<tr class="separator:a6335de3036d6e0fe9a3942cd6f30c87f inherit pro_attribs_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad1fc63c91641a5e160aa19108a7811ec inherit pro_attribs_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="ad1fc63c91641a5e160aa19108a7811ec"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#ad1fc63c91641a5e160aa19108a7811ec">force_no_recompute_reciprocal_</a></td></tr>
<tr class="memdesc:ad1fc63c91641a5e160aa19108a7811ec inherit pro_attribs_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">A flag which, if set, means the tree operating on the source cloud will never be recomputed <br /></td></tr>
<tr class="separator:ad1fc63c91641a5e160aa19108a7811ec inherit pro_attribs_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a010905bbc1bc67175d3ecf3b2ea6401a inherit pro_attribs_classpcl_1_1_registration"><td class="memItemLeft" align="right" valign="top"><a id="a010905bbc1bc67175d3ecf3b2ea6401a"></a>
boost::function&lt; void(const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; PointSource &gt; &amp;cloud_src, const std::vector&lt; int &gt; &amp;indices_src, const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; PointTarget &gt; &amp;cloud_tgt, const std::vector&lt; int &gt; &amp;indices_tgt)&gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_registration.html#a010905bbc1bc67175d3ecf3b2ea6401a">update_visualizer_</a></td></tr>
<tr class="memdesc:a010905bbc1bc67175d3ecf3b2ea6401a inherit pro_attribs_classpcl_1_1_registration"><td class="mdescLeft">&#160;</td><td class="mdescRight">Callback function to update intermediate source point cloud position during it's registration to the target point cloud. <br /></td></tr>
<tr class="separator:a010905bbc1bc67175d3ecf3b2ea6401a inherit pro_attribs_classpcl_1_1_registration"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classpcl_1_1_p_c_l_base"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classpcl_1_1_p_c_l_base')"><img src="closed.png" alt="-"/>&#160;Protected 属性 继承自 <a class="el" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase&lt; PointSource &gt;</a></td></tr>
<tr class="memitem:a09c70d8e06e3fb4f07903fe6f8d67869 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a09c70d8e06e3fb4f07903fe6f8d67869"></a>
PointCloudConstPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a></td></tr>
<tr class="memdesc:a09c70d8e06e3fb4f07903fe6f8d67869 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">The input point cloud dataset. <br /></td></tr>
<tr class="separator:a09c70d8e06e3fb4f07903fe6f8d67869 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaee847c8a517ebf365bad2cb182a6626 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="aaee847c8a517ebf365bad2cb182a6626"></a>
IndicesPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a></td></tr>
<tr class="memdesc:aaee847c8a517ebf365bad2cb182a6626 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">A pointer to the vector of point indices to use. <br /></td></tr>
<tr class="separator:aaee847c8a517ebf365bad2cb182a6626 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada1eadb824d34ca9206a86343d9760bb inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ada1eadb824d34ca9206a86343d9760bb"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#ada1eadb824d34ca9206a86343d9760bb">use_indices_</a></td></tr>
<tr class="memdesc:ada1eadb824d34ca9206a86343d9760bb inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set to true if point indices are used. <br /></td></tr>
<tr class="separator:ada1eadb824d34ca9206a86343d9760bb inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adadb0299f144528020ed558af6879662 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="adadb0299f144528020ed558af6879662"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#adadb0299f144528020ed558af6879662">fake_indices_</a></td></tr>
<tr class="memdesc:adadb0299f144528020ed558af6879662 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">If no set of indices are given, we construct a set of fake indices that mimic the input PointCloud. <br /></td></tr>
<tr class="separator:adadb0299f144528020ed558af6879662 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
额外继承的成员函数</h2></td></tr>
<tr class="inherit_header pub_attribs_classpcl_1_1_iterative_closest_point"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classpcl_1_1_iterative_closest_point')"><img src="closed.png" alt="-"/>&#160;Public 属性 继承自 <a class="el" href="classpcl_1_1_iterative_closest_point.html">pcl::IterativeClosestPoint&lt; PointSource, PointTarget, float &gt;</a></td></tr>
<tr class="memitem:a6271a9c8a9e4d4c532408007630973a8 inherit pub_attribs_classpcl_1_1_iterative_closest_point"><td class="memItemLeft" align="right" valign="top"><a id="a6271a9c8a9e4d4c532408007630973a8"></a>
<a class="el" href="classpcl_1_1registration_1_1_default_convergence_criteria.html">pcl::registration::DefaultConvergenceCriteria</a>&lt; float &gt;::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>convergence_criteria_</b></td></tr>
<tr class="separator:a6271a9c8a9e4d4c532408007630973a8 inherit pub_attribs_classpcl_1_1_iterative_closest_point"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><h3>template&lt;typename PointSource, typename PointTarget, typename Scalar = float&gt;<br />
class pcl::JointIterativeClosestPoint&lt; PointSource, PointTarget, Scalar &gt;</h3>

<p><b><a class="el" href="classpcl_1_1_joint_iterative_closest_point.html" title="JointIterativeClosestPoint extends ICP to multiple frames which share the same transform....">JointIterativeClosestPoint</a></b> extends ICP to multiple frames which share the same transform. This is particularly useful when solving for camera extrinsics using multiple observations. When given a single pair of clouds, this reduces to vanilla ICP. </p>
<dl class="section author"><dt>作者</dt><dd>Stephen Miller </dd></dl>
</div><h2 class="groupheader">成员函数说明</h2>
<a id="a91792123c6770794d22b73cc5bd1c540"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a91792123c6770794d22b73cc5bd1c540">&#9670;&nbsp;</a></span>addCorrespondenceEstimation()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointSource , typename PointTarget , typename Scalar  = float&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_joint_iterative_closest_point.html">pcl::JointIterativeClosestPoint</a>&lt; PointSource, PointTarget, Scalar &gt;::addCorrespondenceEstimation </td>
          <td>(</td>
          <td class="paramtype">CorrespondenceEstimationPtr&#160;</td>
          <td class="paramname"><em>ce</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Add a manual correspondence estimator If you choose to do this, you must add one for each input source / target pair. They do not need to have trees or input clouds set ahead of time. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">ce</td><td><a class="el" href="structpcl_1_1_correspondence.html" title="Correspondence represents a match between two entities (e.g., points, descriptors,...">Correspondence</a> estimation </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;      {</div>
<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;        correspondence_estimations_.push_back (ce);</div>
<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;      }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a3bc7b3d35642538cfb3221356fa3e6e0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3bc7b3d35642538cfb3221356fa3e6e0">&#9670;&nbsp;</a></span>addInputSource()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointSource , typename PointTarget , typename Scalar  = float&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_joint_iterative_closest_point.html">pcl::JointIterativeClosestPoint</a>&lt; PointSource, PointTarget, Scalar &gt;::addInputSource </td>
          <td>(</td>
          <td class="paramtype">const PointCloudSourceConstPtr &amp;&#160;</td>
          <td class="paramname"><em>cloud</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Add a source cloud to the joint solver </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cloud</td><td>source cloud </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;      {</div>
<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;        <span class="comment">// Set the parent InputSource, just to get all cached values (e.g. the existence of normals).</span></div>
<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;        <span class="keywordflow">if</span> (sources_.empty ())</div>
<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;          <a class="code" href="classpcl_1_1_iterative_closest_point.html#ad5215429e057c8760ac48e9bdb09b12c">IterativeClosestPoint&lt;PointSource, PointTarget, Scalar&gt;::setInputSource</a> (cloud);</div>
<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;        sources_.push_back (cloud);</div>
<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;      }</div>
<div class="ttc" id="aclasspcl_1_1_iterative_closest_point_html_ad5215429e057c8760ac48e9bdb09b12c"><div class="ttname"><a href="classpcl_1_1_iterative_closest_point.html#ad5215429e057c8760ac48e9bdb09b12c">pcl::IterativeClosestPoint::setInputSource</a></div><div class="ttdeci">virtual void setInputSource(const PointCloudSourceConstPtr &amp;cloud)</div><div class="ttdoc">Provide a pointer to the input source (e.g., the point cloud that we want to align to the target)</div><div class="ttdef"><b>Definition:</b> icp.h:177</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="afaf2657a7501d3a83130b2fd79876705"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afaf2657a7501d3a83130b2fd79876705">&#9670;&nbsp;</a></span>addInputTarget()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointSource , typename PointTarget , typename Scalar  = float&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_joint_iterative_closest_point.html">pcl::JointIterativeClosestPoint</a>&lt; PointSource, PointTarget, Scalar &gt;::addInputTarget </td>
          <td>(</td>
          <td class="paramtype">const PointCloudTargetConstPtr &amp;&#160;</td>
          <td class="paramname"><em>cloud</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Add a target cloud to the joint solver </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cloud</td><td>target cloud </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;      {</div>
<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;        <span class="comment">// Set the parent InputTarget, just to get all cached values (e.g. the existence of normals).</span></div>
<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;        <span class="keywordflow">if</span> (targets_.empty ())</div>
<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;          <a class="code" href="classpcl_1_1_iterative_closest_point.html#a8876f743cc31471a975e950e66c179d4">IterativeClosestPoint&lt;PointSource, PointTarget, Scalar&gt;::setInputTarget</a> (cloud);</div>
<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;        targets_.push_back (cloud);</div>
<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;      }</div>
<div class="ttc" id="aclasspcl_1_1_iterative_closest_point_html_a8876f743cc31471a975e950e66c179d4"><div class="ttname"><a href="classpcl_1_1_iterative_closest_point.html#a8876f743cc31471a975e950e66c179d4">pcl::IterativeClosestPoint::setInputTarget</a></div><div class="ttdeci">virtual void setInputTarget(const PointCloudTargetConstPtr &amp;cloud)</div><div class="ttdoc">Provide a pointer to the input target (e.g., the point cloud that we want to align to the target)</div><div class="ttdef"><b>Definition:</b> icp.h:212</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a0de169e63fec513a36d93f3912e790b7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0de169e63fec513a36d93f3912e790b7">&#9670;&nbsp;</a></span>computeTransformation()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointSource , typename PointTarget , typename Scalar &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_joint_iterative_closest_point.html">pcl::JointIterativeClosestPoint</a>&lt; PointSource, PointTarget, Scalar &gt;::computeTransformation </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classpcl_1_1_point_cloud.html">PointCloudSource</a> &amp;&#160;</td>
          <td class="paramname"><em>output</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Matrix4 &amp;&#160;</td>
          <td class="paramname"><em>guess</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Rigid transformation computation method with initial guess. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">output</td><td>the transformed input point cloud dataset using the rigid transformation found </td></tr>
    <tr><td class="paramname">guess</td><td>the initial guess of the transformation to compute </td></tr>
  </table>
  </dd>
</dl>

<p>重载 <a class="el" href="classpcl_1_1_iterative_closest_point.html#a64a35f2fcda230eaf9b168384763d3d0">pcl::IterativeClosestPoint&lt; PointSource, PointTarget, float &gt;</a> .</p>
<div class="fragment"><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;{</div>
<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;  <span class="comment">// Point clouds containing the correspondences of each point in &lt;input, indices&gt;</span></div>
<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;  <span class="keywordflow">if</span> (sources_.size () != targets_.size () || sources_.empty () || targets_.empty ())</div>
<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;  {</div>
<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;    PCL_ERROR (<span class="stringliteral">&quot;[pcl::%s::computeTransformation] Must set InputSources and InputTargets to the same, nonzero size!\n&quot;</span>, </div>
<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;        <a class="code" href="classpcl_1_1_registration.html#a26eae6a42450893ca1c2ed81560159f2">getClassName</a> ().c_str ());</div>
<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;    <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;  }</div>
<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;  <span class="keywordtype">bool</span> manual_correspondence_estimations_set = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;  <span class="keywordflow">if</span> (correspondence_estimations_.empty ())</div>
<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;  {</div>
<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;    manual_correspondence_estimations_set = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;    correspondence_estimations_.resize (sources_.size ());</div>
<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; sources_.size (); i++)</div>
<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;    {</div>
<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;      correspondence_estimations_[i] = <a class="code" href="classpcl_1_1_registration.html#a5f5e6122a988e5114f4caa1212920444">correspondence_estimation_</a>-&gt;clone ();      </div>
<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;      KdTreeReciprocalPtr src_tree (<span class="keyword">new</span> KdTreeReciprocal);</div>
<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;      KdTreePtr tgt_tree (<span class="keyword">new</span> KdTree);</div>
<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;      correspondence_estimations_[i]-&gt;setSearchMethodTarget (tgt_tree);</div>
<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;      correspondence_estimations_[i]-&gt;setSearchMethodSource (src_tree);</div>
<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;    }</div>
<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;  }</div>
<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;  <span class="keywordflow">if</span> (correspondence_estimations_.size () != sources_.size ())</div>
<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;  {</div>
<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;    PCL_ERROR (<span class="stringliteral">&quot;[pcl::%s::computeTransform] Must set CorrespondenceEstimations to be the same size as the joint\n&quot;</span>, </div>
<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;        <a class="code" href="classpcl_1_1_registration.html#a26eae6a42450893ca1c2ed81560159f2">getClassName</a> ().c_str ());</div>
<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;  }</div>
<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;  std::vector&lt;PointCloudSourcePtr&gt; inputs_transformed (sources_.size ());</div>
<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; sources_.size (); i++)</div>
<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;  {</div>
<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;    inputs_transformed[i].reset (<span class="keyword">new</span> PointCloudSource);</div>
<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;  }</div>
<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160; </div>
<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;  <a class="code" href="classpcl_1_1_registration.html#a6957c3193d73098cb0535d6625d591d4">nr_iterations_</a> = 0;</div>
<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;  <a class="code" href="classpcl_1_1_registration.html#a8e94793b677e107410ebb29ea2f931e9">converged_</a> = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160; </div>
<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;  <span class="comment">// Initialise final transformation to the guessed one</span></div>
<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;  <a class="code" href="classpcl_1_1_registration.html#a023e79a041ee70e8383654432cf5a71e">final_transformation_</a> = guess;</div>
<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160; </div>
<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;  <span class="comment">// Make a combined transformed input and output</span></div>
<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;  std::vector&lt;size_t&gt; input_offsets (sources_.size ());</div>
<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;  std::vector&lt;size_t&gt; target_offsets (targets_.size ());</div>
<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;  PointCloudSourcePtr sources_combined (<span class="keyword">new</span> PointCloudSource);</div>
<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;  PointCloudSourcePtr inputs_transformed_combined (<span class="keyword">new</span> PointCloudSource);</div>
<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;  PointCloudTargetPtr targets_combined (<span class="keyword">new</span> PointCloudTarget);</div>
<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;  <span class="keywordtype">size_t</span> input_offset = 0;</div>
<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;  <span class="keywordtype">size_t</span> target_offset = 0;</div>
<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; sources_.size (); i++)</div>
<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;  {</div>
<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;    <span class="comment">// If the guessed transformation is non identity</span></div>
<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    <span class="keywordflow">if</span> (guess != Matrix4::Identity ())</div>
<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    {</div>
<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;       <span class="comment">// Apply guessed transformation prior to search for neighbours</span></div>
<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;      this-&gt;<a class="code" href="classpcl_1_1_iterative_closest_point.html#a9e5609b6e348a9592b12871d175dabbf">transformCloud</a> (*sources_[i], *inputs_transformed[i], guess);</div>
<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    }</div>
<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;    <span class="keywordflow">else</span></div>
<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    {</div>
<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;      *inputs_transformed[i] = *sources_[i];</div>
<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;    }</div>
<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    *sources_combined += *sources_[i];</div>
<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    *inputs_transformed_combined += *inputs_transformed[i];</div>
<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    *targets_combined += *targets_[i];</div>
<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    input_offsets[i] = input_offset;</div>
<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;    target_offsets[i] = target_offset;</div>
<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;    input_offset += inputs_transformed[i]-&gt;size ();</div>
<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    target_offset += targets_[i]-&gt;size ();</div>
<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;  }</div>
<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160; </div>
<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160; </div>
<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160; </div>
<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;  <a class="code" href="classpcl_1_1_registration.html#a2cdeaab1c7d5e156a7bd35ee71c1f0db">transformation_</a> = Matrix4::Identity ();</div>
<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;  <span class="comment">// Make blobs if necessary</span></div>
<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;  <a class="code" href="classpcl_1_1_joint_iterative_closest_point.html#a3a115a1c3195878088cef67a9bb32120">determineRequiredBlobData</a> ();</div>
<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;  <span class="comment">// Pass in the default target for the Correspondence Estimation/Rejection code</span></div>
<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; sources_.size (); i++)</div>
<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;  {</div>
<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    correspondence_estimations_[i]-&gt;setInputTarget (targets_[i]);</div>
<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;    <span class="keywordflow">if</span> (correspondence_estimations_[i]-&gt;requiresTargetNormals ())</div>
<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;    {</div>
<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;      PCLPointCloud2::Ptr target_blob (<span class="keyword">new</span> PCLPointCloud2);</div>
<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;      pcl::toPCLPointCloud2 (*targets_[i], *target_blob);</div>
<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;      correspondence_estimations_[i]-&gt;setTargetNormals (target_blob);</div>
<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;    }</div>
<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;  }</div>
<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160; </div>
<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;  PCLPointCloud2::Ptr targets_combined_blob (<span class="keyword">new</span> PCLPointCloud2);</div>
<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;  <span class="keywordflow">if</span> (!<a class="code" href="classpcl_1_1_registration.html#adc73c4731a1e01ac100ebf4659578e1c">correspondence_rejectors_</a>.empty () &amp;&amp; need_target_blob_)</div>
<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;    pcl::toPCLPointCloud2 (*targets_combined, *targets_combined_blob);</div>
<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160; </div>
<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; <a class="code" href="classpcl_1_1_registration.html#adc73c4731a1e01ac100ebf4659578e1c">correspondence_rejectors_</a>.size (); ++i)</div>
<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;  {</div>
<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;    registration::CorrespondenceRejector::Ptr&amp; rej = <a class="code" href="classpcl_1_1_registration.html#adc73c4731a1e01ac100ebf4659578e1c">correspondence_rejectors_</a>[i];</div>
<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;    <span class="keywordflow">if</span> (rej-&gt;requiresTargetPoints ())</div>
<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;      rej-&gt;setTargetPoints (targets_combined_blob);</div>
<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;    <span class="keywordflow">if</span> (rej-&gt;requiresTargetNormals () &amp;&amp; <a class="code" href="classpcl_1_1_iterative_closest_point.html#aed96da82ec7cdef9e3bad46c28dfc9be">target_has_normals_</a>)</div>
<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;      rej-&gt;setTargetNormals (targets_combined_blob);</div>
<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;  }</div>
<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160; </div>
<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;  convergence_criteria_-&gt;<a class="code" href="classpcl_1_1registration_1_1_default_convergence_criteria.html#a551e8e512beef03d81cc64d0f598f147">setMaximumIterations</a> (<a class="code" href="classpcl_1_1_registration.html#aa776d097d20137f2702a275d931989d2">max_iterations_</a>);</div>
<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;  convergence_criteria_-&gt;<a class="code" href="classpcl_1_1registration_1_1_default_convergence_criteria.html#a5f7261d61ed08afcb5e69b85d29371c1">setRelativeMSE</a> (<a class="code" href="classpcl_1_1_registration.html#ab5bf2297e961c3012bffe79fdd2d495d">euclidean_fitness_epsilon_</a>);</div>
<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;  convergence_criteria_-&gt;<a class="code" href="classpcl_1_1registration_1_1_default_convergence_criteria.html#a5d3085bb14b4a881acb7da2670573815">setTranslationThreshold</a> (<a class="code" href="classpcl_1_1_registration.html#adbd6519634f433c0be2fd640c0c75108">transformation_epsilon_</a>);</div>
<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;  convergence_criteria_-&gt;<a class="code" href="classpcl_1_1registration_1_1_default_convergence_criteria.html#a8c2718468e3f2f219dcbeab172982d84">setRotationThreshold</a> (1.0 - <a class="code" href="classpcl_1_1_registration.html#adbd6519634f433c0be2fd640c0c75108">transformation_epsilon_</a>);</div>
<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160; </div>
<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;  <span class="comment">// Repeat until convergence</span></div>
<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;  std::vector&lt;CorrespondencesPtr&gt; partial_correspondences_ (sources_.size ());</div>
<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; sources_.size (); i++)</div>
<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;  {</div>
<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;    partial_correspondences_[i].reset (<span class="keyword">new</span> pcl::Correspondences);</div>
<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;  }</div>
<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160; </div>
<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;  <span class="keywordflow">do</span></div>
<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;  {</div>
<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;    <span class="comment">// Save the previously estimated transformation</span></div>
<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;    <a class="code" href="classpcl_1_1_registration.html#a8d0064ba2f733ef07476f42de09a656f">previous_transformation_</a> = <a class="code" href="classpcl_1_1_registration.html#a2cdeaab1c7d5e156a7bd35ee71c1f0db">transformation_</a>;</div>
<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160; </div>
<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;    <span class="comment">// Set the source each iteration, to ensure the dirty flag is updated</span></div>
<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;    <a class="code" href="classpcl_1_1_registration.html#a98f1c160391fff07f34339b63286e228">correspondences_</a>-&gt;clear ();</div>
<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; correspondence_estimations_.size (); i++)</div>
<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;    {</div>
<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;      correspondence_estimations_[i]-&gt;setInputSource (inputs_transformed[i]);</div>
<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;      <span class="comment">// Get blob data if needed</span></div>
<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;      <span class="keywordflow">if</span> (correspondence_estimations_[i]-&gt;requiresSourceNormals ())</div>
<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;      {</div>
<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;        PCLPointCloud2::Ptr input_transformed_blob (<span class="keyword">new</span> PCLPointCloud2);</div>
<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;        toPCLPointCloud2 (*inputs_transformed[i], *input_transformed_blob);</div>
<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;        correspondence_estimations_[i]-&gt;setSourceNormals (input_transformed_blob);</div>
<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;      }</div>
<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;      </div>
<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;      <span class="comment">// Estimate correspondences on each cloud pair separately</span></div>
<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;      <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_iterative_closest_point.html#a1c4cebbb2d9789f5f55e6831e335b15d">use_reciprocal_correspondence_</a>)</div>
<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;      {</div>
<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;        correspondence_estimations_[i]-&gt;determineReciprocalCorrespondences (*partial_correspondences_[i], <a class="code" href="classpcl_1_1_registration.html#a15aa975f33a8f22573bad118ddda10dd">corr_dist_threshold_</a>);</div>
<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;      }</div>
<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;      <span class="keywordflow">else</span></div>
<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;      {</div>
<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;        correspondence_estimations_[i]-&gt;determineCorrespondences (*partial_correspondences_[i], <a class="code" href="classpcl_1_1_registration.html#a15aa975f33a8f22573bad118ddda10dd">corr_dist_threshold_</a>);</div>
<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;      }</div>
<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;      PCL_DEBUG (<span class="stringliteral">&quot;[pcl::%s::computeTransformation] Found %d partial correspondences for cloud [%d]\n&quot;</span>, </div>
<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;          <a class="code" href="classpcl_1_1_registration.html#a26eae6a42450893ca1c2ed81560159f2">getClassName</a> ().c_str (), </div>
<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;          partial_correspondences_[i]-&gt;size (), i);</div>
<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = 0; j &lt; partial_correspondences_[i]-&gt;size (); j++)</div>
<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;      {</div>
<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;        <a class="code" href="structpcl_1_1_correspondence.html">pcl::Correspondence</a> corr = partial_correspondences_[i]-&gt;at (j);</div>
<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;        <span class="comment">// Update the offsets to be for the combined clouds</span></div>
<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;        corr.<a class="code" href="structpcl_1_1_correspondence.html#a1c5d6554ca02dd7aa34fa02f346e7399">index_query</a> += input_offsets[i];</div>
<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;        corr.<a class="code" href="structpcl_1_1_correspondence.html#a5e5d2178826d203a755d37bfd317d701">index_match</a> += target_offsets[i];</div>
<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;        <a class="code" href="classpcl_1_1_registration.html#a98f1c160391fff07f34339b63286e228">correspondences_</a>-&gt;push_back (corr);</div>
<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;      }</div>
<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;    }</div>
<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;    PCL_DEBUG (<span class="stringliteral">&quot;[pcl::%s::computeTransformation] Total correspondences: %d\n&quot;</span>, <a class="code" href="classpcl_1_1_registration.html#a26eae6a42450893ca1c2ed81560159f2">getClassName</a> ().c_str (), <a class="code" href="classpcl_1_1_registration.html#a98f1c160391fff07f34339b63286e228">correspondences_</a>-&gt;size ());</div>
<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;    </div>
<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;    PCLPointCloud2::Ptr inputs_transformed_combined_blob;</div>
<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;    <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_iterative_closest_point.html#a4ed9b4b47ccd4dc2da120a021d73122c">need_source_blob_</a>)</div>
<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;    {</div>
<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;      inputs_transformed_combined_blob.reset (<span class="keyword">new</span> PCLPointCloud2);</div>
<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;      toPCLPointCloud2 (*inputs_transformed_combined, *inputs_transformed_combined_blob);</div>
<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;    }</div>
<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;    CorrespondencesPtr temp_correspondences (<span class="keyword">new</span> Correspondences (*<a class="code" href="classpcl_1_1_registration.html#a98f1c160391fff07f34339b63286e228">correspondences_</a>));</div>
<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; <a class="code" href="classpcl_1_1_registration.html#adc73c4731a1e01ac100ebf4659578e1c">correspondence_rejectors_</a>.size (); ++i)</div>
<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;    {</div>
<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;      PCL_DEBUG (<span class="stringliteral">&quot;Applying a correspondence rejector method: %s.\n&quot;</span>, <a class="code" href="classpcl_1_1_registration.html#adc73c4731a1e01ac100ebf4659578e1c">correspondence_rejectors_</a>[i]-&gt;<a class="code" href="classpcl_1_1_registration.html#a26eae6a42450893ca1c2ed81560159f2">getClassName</a> ().c_str ());</div>
<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;      registration::CorrespondenceRejector::Ptr&amp; rej = <a class="code" href="classpcl_1_1_registration.html#adc73c4731a1e01ac100ebf4659578e1c">correspondence_rejectors_</a>[i];</div>
<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;      PCL_DEBUG (<span class="stringliteral">&quot;Applying a correspondence rejector method: %s.\n&quot;</span>, rej-&gt;getClassName ().c_str ());</div>
<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;      <span class="keywordflow">if</span> (rej-&gt;requiresSourcePoints ())</div>
<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;        rej-&gt;setSourcePoints (inputs_transformed_combined_blob);</div>
<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;      <span class="keywordflow">if</span> (rej-&gt;requiresSourceNormals () &amp;&amp; <a class="code" href="classpcl_1_1_iterative_closest_point.html#a9c473bc941c384d52d8af7cc34e4d703">source_has_normals_</a>)</div>
<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;        rej-&gt;setSourceNormals (inputs_transformed_combined_blob);</div>
<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;      rej-&gt;setInputCorrespondences (temp_correspondences);</div>
<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;      rej-&gt;getCorrespondences (*<a class="code" href="classpcl_1_1_registration.html#a98f1c160391fff07f34339b63286e228">correspondences_</a>);</div>
<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;      <span class="comment">// Modify input for the next iteration</span></div>
<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;      <span class="keywordflow">if</span> (i &lt; <a class="code" href="classpcl_1_1_registration.html#adc73c4731a1e01ac100ebf4659578e1c">correspondence_rejectors_</a>.size () - 1)</div>
<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;        *temp_correspondences = *<a class="code" href="classpcl_1_1_registration.html#a98f1c160391fff07f34339b63286e228">correspondences_</a>;</div>
<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;    }</div>
<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160; </div>
<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;    <span class="keywordtype">int</span> cnt = <a class="code" href="classpcl_1_1_registration.html#a98f1c160391fff07f34339b63286e228">correspondences_</a>-&gt;size ();</div>
<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;    <span class="comment">// Check whether we have enough correspondences</span></div>
<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;    <span class="keywordflow">if</span> (cnt &lt; <a class="code" href="classpcl_1_1_registration.html#ae33bc2efe08f2fff1a35df1b3d602036">min_number_correspondences_</a>)</div>
<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;    {</div>
<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;      PCL_ERROR (<span class="stringliteral">&quot;[pcl::%s::computeTransformation] Not enough correspondences found. Relax your threshold parameters.\n&quot;</span>, <a class="code" href="classpcl_1_1_registration.html#a26eae6a42450893ca1c2ed81560159f2">getClassName</a> ().c_str ());</div>
<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;      convergence_criteria_-&gt;<a class="code" href="classpcl_1_1registration_1_1_default_convergence_criteria.html#a1351fb32104e835226a859ff32242b9c">setConvergenceState</a>(<a class="code" href="classpcl_1_1registration_1_1_default_convergence_criteria.html">pcl::registration::DefaultConvergenceCriteria&lt;Scalar&gt;::CONVERGENCE_CRITERIA_NO_CORRESPONDENCES</a>);</div>
<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;      <a class="code" href="classpcl_1_1_registration.html#a8e94793b677e107410ebb29ea2f931e9">converged_</a> = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;      <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;    }</div>
<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160; </div>
<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;    <span class="comment">// Estimate the transform jointly, on a combined correspondence set</span></div>
<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;    <a class="code" href="classpcl_1_1_registration.html#a99baaa7e513bda9103c58fd1471557ed">transformation_estimation_</a>-&gt;estimateRigidTransformation (*inputs_transformed_combined, *targets_combined, *<a class="code" href="classpcl_1_1_registration.html#a98f1c160391fff07f34339b63286e228">correspondences_</a>, <a class="code" href="classpcl_1_1_registration.html#a2cdeaab1c7d5e156a7bd35ee71c1f0db">transformation_</a>);</div>
<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160; </div>
<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;    <span class="comment">// Tranform the combined data</span></div>
<div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;    this-&gt;<a class="code" href="classpcl_1_1_iterative_closest_point.html#a9e5609b6e348a9592b12871d175dabbf">transformCloud</a> (*inputs_transformed_combined, *inputs_transformed_combined, <a class="code" href="classpcl_1_1_registration.html#a2cdeaab1c7d5e156a7bd35ee71c1f0db">transformation_</a>);</div>
<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;    <span class="comment">// And all its components</span></div>
<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; sources_.size (); i++)</div>
<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;    {</div>
<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;      this-&gt;<a class="code" href="classpcl_1_1_iterative_closest_point.html#a9e5609b6e348a9592b12871d175dabbf">transformCloud</a> (*inputs_transformed[i], *inputs_transformed[i], <a class="code" href="classpcl_1_1_registration.html#a2cdeaab1c7d5e156a7bd35ee71c1f0db">transformation_</a>);</div>
<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;    }</div>
<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160; </div>
<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;    <span class="comment">// Obtain the final transformation    </span></div>
<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;    <a class="code" href="classpcl_1_1_registration.html#a023e79a041ee70e8383654432cf5a71e">final_transformation_</a> = <a class="code" href="classpcl_1_1_registration.html#a2cdeaab1c7d5e156a7bd35ee71c1f0db">transformation_</a> * <a class="code" href="classpcl_1_1_registration.html#a023e79a041ee70e8383654432cf5a71e">final_transformation_</a>;</div>
<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160; </div>
<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;    ++<a class="code" href="classpcl_1_1_registration.html#a6957c3193d73098cb0535d6625d591d4">nr_iterations_</a>;</div>
<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160; </div>
<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;    <span class="comment">// Update the vizualization of icp convergence</span></div>
<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;    <span class="comment">//if (update_visualizer_ != 0)</span></div>
<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;    <span class="comment">//  update_visualizer_(output, source_indices_good, *target_, target_indices_good );</span></div>
<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160; </div>
<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;    <a class="code" href="classpcl_1_1_registration.html#a8e94793b677e107410ebb29ea2f931e9">converged_</a> = <span class="keyword">static_cast&lt;</span><span class="keywordtype">bool</span><span class="keyword">&gt;</span> ((*convergence_criteria_));</div>
<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;  }</div>
<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;  <span class="keywordflow">while</span> (!<a class="code" href="classpcl_1_1_registration.html#a8e94793b677e107410ebb29ea2f931e9">converged_</a>);</div>
<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160; </div>
<div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;  PCL_DEBUG (<span class="stringliteral">&quot;Transformation is:\n\t%5f\t%5f\t%5f\t%5f\n\t%5f\t%5f\t%5f\t%5f\n\t%5f\t%5f\t%5f\t%5f\n\t%5f\t%5f\t%5f\t%5f\n&quot;</span>, </div>
<div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;      <a class="code" href="classpcl_1_1_registration.html#a023e79a041ee70e8383654432cf5a71e">final_transformation_</a> (0, 0), <a class="code" href="classpcl_1_1_registration.html#a023e79a041ee70e8383654432cf5a71e">final_transformation_</a> (0, 1), <a class="code" href="classpcl_1_1_registration.html#a023e79a041ee70e8383654432cf5a71e">final_transformation_</a> (0, 2), <a class="code" href="classpcl_1_1_registration.html#a023e79a041ee70e8383654432cf5a71e">final_transformation_</a> (0, 3),</div>
<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;      <a class="code" href="classpcl_1_1_registration.html#a023e79a041ee70e8383654432cf5a71e">final_transformation_</a> (1, 0), <a class="code" href="classpcl_1_1_registration.html#a023e79a041ee70e8383654432cf5a71e">final_transformation_</a> (1, 1), <a class="code" href="classpcl_1_1_registration.html#a023e79a041ee70e8383654432cf5a71e">final_transformation_</a> (1, 2), <a class="code" href="classpcl_1_1_registration.html#a023e79a041ee70e8383654432cf5a71e">final_transformation_</a> (1, 3),</div>
<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;      <a class="code" href="classpcl_1_1_registration.html#a023e79a041ee70e8383654432cf5a71e">final_transformation_</a> (2, 0), <a class="code" href="classpcl_1_1_registration.html#a023e79a041ee70e8383654432cf5a71e">final_transformation_</a> (2, 1), <a class="code" href="classpcl_1_1_registration.html#a023e79a041ee70e8383654432cf5a71e">final_transformation_</a> (2, 2), <a class="code" href="classpcl_1_1_registration.html#a023e79a041ee70e8383654432cf5a71e">final_transformation_</a> (2, 3),</div>
<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;      <a class="code" href="classpcl_1_1_registration.html#a023e79a041ee70e8383654432cf5a71e">final_transformation_</a> (3, 0), <a class="code" href="classpcl_1_1_registration.html#a023e79a041ee70e8383654432cf5a71e">final_transformation_</a> (3, 1), <a class="code" href="classpcl_1_1_registration.html#a023e79a041ee70e8383654432cf5a71e">final_transformation_</a> (3, 2), <a class="code" href="classpcl_1_1_registration.html#a023e79a041ee70e8383654432cf5a71e">final_transformation_</a> (3, 3));</div>
<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160; </div>
<div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;  <span class="comment">// For fitness checks, etc, we&#39;ll use an aggregated cloud for now (should be evaluating independently for correctness, but this requires propagating a few virtual methods from Registration)</span></div>
<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;  <a class="code" href="classpcl_1_1_iterative_closest_point.html#ad5215429e057c8760ac48e9bdb09b12c">IterativeClosestPoint&lt;PointSource, PointTarget, Scalar&gt;::setInputSource</a> (sources_combined);</div>
<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;  <a class="code" href="classpcl_1_1_iterative_closest_point.html#a8876f743cc31471a975e950e66c179d4">IterativeClosestPoint&lt;PointSource, PointTarget, Scalar&gt;::setInputTarget</a> (targets_combined);</div>
<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160; </div>
<div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;  <span class="comment">// If we automatically set the correspondence estimators, we should clear them now</span></div>
<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;  <span class="keywordflow">if</span> (!manual_correspondence_estimations_set)</div>
<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;  {</div>
<div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;    correspondence_estimations_.clear ();</div>
<div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;  }</div>
<div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160; </div>
<div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160; </div>
<div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;  <span class="comment">// By definition, this method will return an empty cloud (for compliance with the ICP API). </span></div>
<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;  <span class="comment">// We can figure out a better solution, if necessary.</span></div>
<div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;  output = PointCloudSource ();</div>
<div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_iterative_closest_point_html_a1c4cebbb2d9789f5f55e6831e335b15d"><div class="ttname"><a href="classpcl_1_1_iterative_closest_point.html#a1c4cebbb2d9789f5f55e6831e335b15d">pcl::IterativeClosestPoint&lt; PointSource, PointTarget, float &gt;::use_reciprocal_correspondence_</a></div><div class="ttdeci">bool use_reciprocal_correspondence_</div><div class="ttdoc">The correspondence type used for correspondence estimation.</div><div class="ttdef"><b>Definition:</b> icp.h:277</div></div>
<div class="ttc" id="aclasspcl_1_1_iterative_closest_point_html_a4ed9b4b47ccd4dc2da120a021d73122c"><div class="ttname"><a href="classpcl_1_1_iterative_closest_point.html#a4ed9b4b47ccd4dc2da120a021d73122c">pcl::IterativeClosestPoint&lt; PointSource, PointTarget, float &gt;::need_source_blob_</a></div><div class="ttdeci">bool need_source_blob_</div><div class="ttdoc">Checks for whether estimators and rejectors need various data</div><div class="ttdef"><b>Definition:</b> icp.h:285</div></div>
<div class="ttc" id="aclasspcl_1_1_iterative_closest_point_html_a9c473bc941c384d52d8af7cc34e4d703"><div class="ttname"><a href="classpcl_1_1_iterative_closest_point.html#a9c473bc941c384d52d8af7cc34e4d703">pcl::IterativeClosestPoint&lt; PointSource, PointTarget, float &gt;::source_has_normals_</a></div><div class="ttdeci">bool source_has_normals_</div><div class="ttdoc">Internal check whether source dataset has normals or not.</div><div class="ttdef"><b>Definition:</b> icp.h:280</div></div>
<div class="ttc" id="aclasspcl_1_1_iterative_closest_point_html_a9e5609b6e348a9592b12871d175dabbf"><div class="ttname"><a href="classpcl_1_1_iterative_closest_point.html#a9e5609b6e348a9592b12871d175dabbf">pcl::IterativeClosestPoint&lt; PointSource, PointTarget, float &gt;::transformCloud</a></div><div class="ttdeci">virtual void transformCloud(const PointCloudSource &amp;input, PointCloudSource &amp;output, const Matrix4 &amp;transform)</div><div class="ttdoc">Apply a rigid transform to a given dataset. Here we check whether whether the dataset has surface nor...</div><div class="ttdef"><b>Definition:</b> icp.hpp:49</div></div>
<div class="ttc" id="aclasspcl_1_1_iterative_closest_point_html_aed96da82ec7cdef9e3bad46c28dfc9be"><div class="ttname"><a href="classpcl_1_1_iterative_closest_point.html#aed96da82ec7cdef9e3bad46c28dfc9be">pcl::IterativeClosestPoint&lt; PointSource, PointTarget, float &gt;::target_has_normals_</a></div><div class="ttdeci">bool target_has_normals_</div><div class="ttdoc">Internal check whether target dataset has normals or not.</div><div class="ttdef"><b>Definition:</b> icp.h:282</div></div>
<div class="ttc" id="aclasspcl_1_1_joint_iterative_closest_point_html_a3a115a1c3195878088cef67a9bb32120"><div class="ttname"><a href="classpcl_1_1_joint_iterative_closest_point.html#a3a115a1c3195878088cef67a9bb32120">pcl::JointIterativeClosestPoint::determineRequiredBlobData</a></div><div class="ttdeci">void determineRequiredBlobData()</div><div class="ttdoc">Looks at the Estimators and Rejectors and determines whether their blob-setter methods need to be cal...</div><div class="ttdef"><b>Definition:</b> joint_icp.hpp:283</div></div>
<div class="ttc" id="aclasspcl_1_1_registration_html_a023e79a041ee70e8383654432cf5a71e"><div class="ttname"><a href="classpcl_1_1_registration.html#a023e79a041ee70e8383654432cf5a71e">pcl::Registration&lt; PointSource, PointTarget, float &gt;::final_transformation_</a></div><div class="ttdeci">Matrix4 final_transformation_</div><div class="ttdoc">The final transformation matrix estimated by the registration method after N iterations.</div><div class="ttdef"><b>Definition:</b> registration.h:505</div></div>
<div class="ttc" id="aclasspcl_1_1_registration_html_a15aa975f33a8f22573bad118ddda10dd"><div class="ttname"><a href="classpcl_1_1_registration.html#a15aa975f33a8f22573bad118ddda10dd">pcl::Registration&lt; PointSource, PointTarget, float &gt;::corr_dist_threshold_</a></div><div class="ttdeci">double corr_dist_threshold_</div><div class="ttdoc">The maximum distance threshold between two correspondent points in source &lt;-&gt; target....</div><div class="ttdef"><b>Definition:</b> registration.h:527</div></div>
<div class="ttc" id="aclasspcl_1_1_registration_html_a26eae6a42450893ca1c2ed81560159f2"><div class="ttname"><a href="classpcl_1_1_registration.html#a26eae6a42450893ca1c2ed81560159f2">pcl::Registration&lt; PointSource, PointTarget, float &gt;::getClassName</a></div><div class="ttdeci">const std::string &amp; getClassName() const</div><div class="ttdoc">Abstract class get name method.</div><div class="ttdef"><b>Definition:</b> registration.h:422</div></div>
<div class="ttc" id="aclasspcl_1_1_registration_html_a2cdeaab1c7d5e156a7bd35ee71c1f0db"><div class="ttname"><a href="classpcl_1_1_registration.html#a2cdeaab1c7d5e156a7bd35ee71c1f0db">pcl::Registration&lt; PointSource, PointTarget, float &gt;::transformation_</a></div><div class="ttdeci">Matrix4 transformation_</div><div class="ttdoc">The transformation matrix estimated by the registration method.</div><div class="ttdef"><b>Definition:</b> registration.h:508</div></div>
<div class="ttc" id="aclasspcl_1_1_registration_html_a5f5e6122a988e5114f4caa1212920444"><div class="ttname"><a href="classpcl_1_1_registration.html#a5f5e6122a988e5114f4caa1212920444">pcl::Registration&lt; PointSource, PointTarget, float &gt;::correspondence_estimation_</a></div><div class="ttdeci">CorrespondenceEstimationPtr correspondence_estimation_</div><div class="ttdoc">A CorrespondenceEstimation object, used to estimate correspondences between the source and the target...</div><div class="ttdef"><b>Definition:</b> registration.h:550</div></div>
<div class="ttc" id="aclasspcl_1_1_registration_html_a6957c3193d73098cb0535d6625d591d4"><div class="ttname"><a href="classpcl_1_1_registration.html#a6957c3193d73098cb0535d6625d591d4">pcl::Registration&lt; PointSource, PointTarget, float &gt;::nr_iterations_</a></div><div class="ttdeci">int nr_iterations_</div><div class="ttdoc">The number of iterations the internal optimization ran for (used internally).</div><div class="ttdef"><b>Definition:</b> registration.h:491</div></div>
<div class="ttc" id="aclasspcl_1_1_registration_html_a8d0064ba2f733ef07476f42de09a656f"><div class="ttname"><a href="classpcl_1_1_registration.html#a8d0064ba2f733ef07476f42de09a656f">pcl::Registration&lt; PointSource, PointTarget, float &gt;::previous_transformation_</a></div><div class="ttdeci">Matrix4 previous_transformation_</div><div class="ttdoc">The previous transformation matrix estimated by the registration method (used internally).</div><div class="ttdef"><b>Definition:</b> registration.h:511</div></div>
<div class="ttc" id="aclasspcl_1_1_registration_html_a8e94793b677e107410ebb29ea2f931e9"><div class="ttname"><a href="classpcl_1_1_registration.html#a8e94793b677e107410ebb29ea2f931e9">pcl::Registration&lt; PointSource, PointTarget, float &gt;::converged_</a></div><div class="ttdeci">bool converged_</div><div class="ttdoc">Holds internal convergence state, given user parameters.</div><div class="ttdef"><b>Definition:</b> registration.h:536</div></div>
<div class="ttc" id="aclasspcl_1_1_registration_html_a98f1c160391fff07f34339b63286e228"><div class="ttname"><a href="classpcl_1_1_registration.html#a98f1c160391fff07f34339b63286e228">pcl::Registration&lt; PointSource, PointTarget, float &gt;::correspondences_</a></div><div class="ttdeci">CorrespondencesPtr correspondences_</div><div class="ttdoc">The set of correspondences determined at this ICP step.</div><div class="ttdef"><b>Definition:</b> registration.h:544</div></div>
<div class="ttc" id="aclasspcl_1_1_registration_html_a99baaa7e513bda9103c58fd1471557ed"><div class="ttname"><a href="classpcl_1_1_registration.html#a99baaa7e513bda9103c58fd1471557ed">pcl::Registration&lt; PointSource, PointTarget, float &gt;::transformation_estimation_</a></div><div class="ttdeci">TransformationEstimationPtr transformation_estimation_</div><div class="ttdoc">A TransformationEstimation object, used to calculate the 4x4 rigid transformation.</div><div class="ttdef"><b>Definition:</b> registration.h:547</div></div>
<div class="ttc" id="aclasspcl_1_1_registration_html_aa776d097d20137f2702a275d931989d2"><div class="ttname"><a href="classpcl_1_1_registration.html#aa776d097d20137f2702a275d931989d2">pcl::Registration&lt; PointSource, PointTarget, float &gt;::max_iterations_</a></div><div class="ttdeci">int max_iterations_</div><div class="ttdoc">The maximum number of iterations the internal optimization should run for. The default value is 10.</div><div class="ttdef"><b>Definition:</b> registration.h:496</div></div>
<div class="ttc" id="aclasspcl_1_1_registration_html_ab5bf2297e961c3012bffe79fdd2d495d"><div class="ttname"><a href="classpcl_1_1_registration.html#ab5bf2297e961c3012bffe79fdd2d495d">pcl::Registration&lt; PointSource, PointTarget, float &gt;::euclidean_fitness_epsilon_</a></div><div class="ttdeci">double euclidean_fitness_epsilon_</div><div class="ttdoc">The maximum allowed Euclidean error between two consecutive steps in the ICP loop,...</div><div class="ttdef"><b>Definition:</b> registration.h:522</div></div>
<div class="ttc" id="aclasspcl_1_1_registration_html_adbd6519634f433c0be2fd640c0c75108"><div class="ttname"><a href="classpcl_1_1_registration.html#adbd6519634f433c0be2fd640c0c75108">pcl::Registration&lt; PointSource, PointTarget, float &gt;::transformation_epsilon_</a></div><div class="ttdeci">double transformation_epsilon_</div><div class="ttdoc">The maximum difference between two consecutive transformations in order to consider convergence (user...</div><div class="ttdef"><b>Definition:</b> registration.h:516</div></div>
<div class="ttc" id="aclasspcl_1_1_registration_html_adc73c4731a1e01ac100ebf4659578e1c"><div class="ttname"><a href="classpcl_1_1_registration.html#adc73c4731a1e01ac100ebf4659578e1c">pcl::Registration&lt; PointSource, PointTarget, float &gt;::correspondence_rejectors_</a></div><div class="ttdeci">std::vector&lt; CorrespondenceRejectorPtr &gt; correspondence_rejectors_</div><div class="ttdoc">The list of correspondence rejectors to use.</div><div class="ttdef"><b>Definition:</b> registration.h:553</div></div>
<div class="ttc" id="aclasspcl_1_1_registration_html_ae33bc2efe08f2fff1a35df1b3d602036"><div class="ttname"><a href="classpcl_1_1_registration.html#ae33bc2efe08f2fff1a35df1b3d602036">pcl::Registration&lt; PointSource, PointTarget, float &gt;::min_number_correspondences_</a></div><div class="ttdeci">int min_number_correspondences_</div><div class="ttdoc">The minimum number of correspondences that the algorithm needs before attempting to estimate the tran...</div><div class="ttdef"><b>Definition:</b> registration.h:541</div></div>
<div class="ttc" id="aclasspcl_1_1registration_1_1_default_convergence_criteria_html"><div class="ttname"><a href="classpcl_1_1registration_1_1_default_convergence_criteria.html">pcl::registration::DefaultConvergenceCriteria</a></div><div class="ttdoc">DefaultConvergenceCriteria represents an instantiation of ConvergenceCriteria, and implements the fol...</div><div class="ttdef"><b>Definition:</b> default_convergence_criteria.h:66</div></div>
<div class="ttc" id="aclasspcl_1_1registration_1_1_default_convergence_criteria_html_a1351fb32104e835226a859ff32242b9c"><div class="ttname"><a href="classpcl_1_1registration_1_1_default_convergence_criteria.html#a1351fb32104e835226a859ff32242b9c">pcl::registration::DefaultConvergenceCriteria::setConvergenceState</a></div><div class="ttdeci">void setConvergenceState(ConvergenceState c)</div><div class="ttdoc">Sets the convergence state externally (for example, when ICP does not find enough correspondences to ...</div><div class="ttdef"><b>Definition:</b> default_convergence_criteria.h:208</div></div>
<div class="ttc" id="aclasspcl_1_1registration_1_1_default_convergence_criteria_html_a551e8e512beef03d81cc64d0f598f147"><div class="ttname"><a href="classpcl_1_1registration_1_1_default_convergence_criteria.html#a551e8e512beef03d81cc64d0f598f147">pcl::registration::DefaultConvergenceCriteria::setMaximumIterations</a></div><div class="ttdeci">void setMaximumIterations(const int nr_iterations)</div><div class="ttdoc">Set the maximum number of iterations the internal optimization should run for.</div><div class="ttdef"><b>Definition:</b> default_convergence_criteria.h:132</div></div>
<div class="ttc" id="aclasspcl_1_1registration_1_1_default_convergence_criteria_html_a5d3085bb14b4a881acb7da2670573815"><div class="ttname"><a href="classpcl_1_1registration_1_1_default_convergence_criteria.html#a5d3085bb14b4a881acb7da2670573815">pcl::registration::DefaultConvergenceCriteria::setTranslationThreshold</a></div><div class="ttdeci">void setTranslationThreshold(const double threshold)</div><div class="ttdoc">Set the translation threshold (maximum allowable difference between two consecutive transformations) ...</div><div class="ttdef"><b>Definition:</b> default_convergence_criteria.h:163</div></div>
<div class="ttc" id="aclasspcl_1_1registration_1_1_default_convergence_criteria_html_a5f7261d61ed08afcb5e69b85d29371c1"><div class="ttname"><a href="classpcl_1_1registration_1_1_default_convergence_criteria.html#a5f7261d61ed08afcb5e69b85d29371c1">pcl::registration::DefaultConvergenceCriteria::setRelativeMSE</a></div><div class="ttdeci">void setRelativeMSE(const double mse_relative)</div><div class="ttdoc">Set the relative MSE between two consecutive sets of correspondences.</div><div class="ttdef"><b>Definition:</b> default_convergence_criteria.h:174</div></div>
<div class="ttc" id="aclasspcl_1_1registration_1_1_default_convergence_criteria_html_a8c2718468e3f2f219dcbeab172982d84"><div class="ttname"><a href="classpcl_1_1registration_1_1_default_convergence_criteria.html#a8c2718468e3f2f219dcbeab172982d84">pcl::registration::DefaultConvergenceCriteria::setRotationThreshold</a></div><div class="ttdeci">void setRotationThreshold(const double threshold)</div><div class="ttdoc">Set the rotation threshold cosine angle (maximum allowable difference between two consecutive transfo...</div><div class="ttdef"><b>Definition:</b> default_convergence_criteria.h:152</div></div>
<div class="ttc" id="astructpcl_1_1_correspondence_html"><div class="ttname"><a href="structpcl_1_1_correspondence.html">pcl::Correspondence</a></div><div class="ttdoc">Correspondence represents a match between two entities (e.g., points, descriptors,...</div><div class="ttdef"><b>Definition:</b> correspondence.h:59</div></div>
<div class="ttc" id="astructpcl_1_1_correspondence_html_a1c5d6554ca02dd7aa34fa02f346e7399"><div class="ttname"><a href="structpcl_1_1_correspondence.html#a1c5d6554ca02dd7aa34fa02f346e7399">pcl::Correspondence::index_query</a></div><div class="ttdeci">int index_query</div><div class="ttdoc">Index of the query (source) point.</div><div class="ttdef"><b>Definition:</b> correspondence.h:61</div></div>
<div class="ttc" id="astructpcl_1_1_correspondence_html_a5e5d2178826d203a755d37bfd317d701"><div class="ttname"><a href="structpcl_1_1_correspondence.html#a5e5d2178826d203a755d37bfd317d701">pcl::Correspondence::index_match</a></div><div class="ttdeci">int index_match</div><div class="ttdoc">Index of the matching (target) point. Set to -1 if no correspondence found.</div><div class="ttdef"><b>Definition:</b> correspondence.h:63</div></div>
</div><!-- fragment -->
</div>
</div>
<hr/>该类的文档由以下文件生成:<ul>
<li>registration/include/pcl/registration/<a class="el" href="joint__icp_8h_source.html">joint_icp.h</a></li>
<li>registration/include/pcl/registration/impl/<a class="el" href="joint__icp_8hpp_source.html">joint_icp.hpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><b>pcl</b></li><li class="navelem"><a class="el" href="classpcl_1_1_joint_iterative_closest_point.html">JointIterativeClosestPoint</a></li>
    <li class="footer">制作者 <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
  </ul>
</div>
</body>
</html>
